home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / window / windowc / beispiel.c next >
Encoding:
C/C++ Source or Header  |  1993-07-29  |  5.6 KB  |  150 lines

  1. /* Beispiel.C --- Erläutert die Anwendung der verschiedenen neuen
  2.           Funktionen und (Struktur-)Variablen in der Toolbox
  3.           "Window.C".
  4.  
  5. */
  6.  
  7. #include "window.c"
  8.  
  9. int main()
  10. {
  11.    int a;                               /* Hilfsvariablen */
  12.    MENU *m1, *m2;
  13.  
  14.    /* Definition (= deklaration) der Bildschirmfenster */
  15.  
  16.    WINDOW main = { 33, 3, 17, 8, f1, 0, f1, "> Hauptmenü <", 35, f1, 0, 0 };
  17.    WINDOW sub1 = { 20, 9, 20, 7, f0, 1, f0, " Datei ", 26, f0, 0, 0 };
  18.    WINDOW sub2 = { 40, 9, 15, 7, f2, 2, f2, " Setup ", 44, f2, 0, 0 };
  19.    WINDOW sub3 = { 30, 14, 30, 7, f3, 3, f3, " Sichern als... ", 37, f3, 0, 0
  20.          };
  21.    WINDOW help = { 10, 10, 60, 5, f0, 4, f0, " Kontextsensitive Hilfe ",
  22.            29, f1, 0, 0 };
  23.  
  24.    /* Jetzt folgt die Definition der einzelnen Menüpunkte. Hierbei ist
  25.       die umgekehrte Reihenfolge der Menüpunkte bei der Deklaration
  26.       deutlich erkennbar. Auf dem Bildschirm werden die Menüpunkte
  27.       dagegen in der Reihenfolge durchlaufen, in der sie miteinander
  28.       verkettet wurden.
  29.    */
  30.  
  31.    MENU sub3p3 = { 32, 18, f0, " Sicherheitskopie machen  ", 33, 0,
  32.            0, 0, 0, 0, 0 };
  33.    MENU sub3p2 = { 32, 17, f0, " Alte Datei umbenennen    ", 32, 0,
  34.            0, 0, &sub3p3, 0, 0 };
  35.    MENU sub3p1 = { 32, 16, f0, " Alte Datei überschreiben ", 31, 0,
  36.            &sub3, 0, &sub3p2, 0, 0 };
  37.  
  38.    MENU sub2p3 = { 42, 13, f0, " Farben   ", 23, 0,
  39.            0, 0, 0, 0, 0 };
  40.    MENU sub2p2 = { 42, 12, f0, " Drucker  ", 22, 0,
  41.            0, 0, &sub2p3, 0, 0 };
  42.    MENU sub2p1 = { 42, 11, f0, " Tastatur ", 21, 0,
  43.            &sub2, 0, &sub2p2, 0, 0 };
  44.  
  45.    MENU sub1p3 = { 22, 13, f0, " Sichern als... ", 13, 0,
  46.            0, &sub3p1, 0, 0, 0 };
  47.    MENU sub1p2 = { 22, 12, f0, " Sichern        ", 12, 0,
  48.            0, 0, &sub1p3, 0, 0 };
  49.    MENU sub1p1 = { 22, 11, f0, " Laden          ", 11, 0,
  50.            &sub1, 0, &sub1p2, 0, 0 };
  51.  
  52.    MENU mainp4 = { 36, 8, f0, " ENDE      ", 04, 0,
  53.            0, 0, 0, 0, 0 };
  54.    MENU mainp3 = { 36, 7, f0, " Suchen    ", 03, 0,
  55.            0, 0, &mainp4, 0, 0 };
  56.    MENU mainp2 = { 36, 6, f0, " Setup...  ", 02, 0,
  57.            0, &sub2p1, &mainp3, 0, 0 };
  58.    MENU mainp1 = { 36, 5, f0, " Datei...  ", 01, 0,
  59.            &main, &sub1p1, &mainp2, 0, 0 };
  60.  
  61.    /* Damit wären alle notwendigen Variablen und Strukturen deklariert.
  62.       Als nächstes beginnt die Initialisierung der Toolbox und des
  63.       kompletten Menüs:
  64.    */
  65.  
  66.    if( OpenTool() == 0 )    /* Fehler beim Öffnen der Toolbox aufgetreten? */
  67.       return( 1 );             /* ja, dann breche das Hauptprg. mit einem
  68.                   Fehlercode ab */
  69.  
  70.    PrepareMenu( &mainp1, NULL );   /* Menü vorbereiten, d. h. alle not-
  71.                       wendigen Zeiger-Verkettungen
  72.                       usw. durchführen */
  73.  
  74.    /* Nun wird das Hauptmenü aufgerufen */
  75.  
  76.    m2 = &mainp1;
  77.  
  78.    while( 1 == 1 )                      /* Endlosschleife erzeugen */
  79.    {
  80.       m1 = UseMenu( m2 );               /* Hauptmenü aufrufen */
  81.  
  82.       if( select == 1 )                 /* ESC im Hauptmenü gedrückt? */
  83.      break;                       /* ja, dann Endlosschleife abbrechen */
  84.  
  85.       if( m1 == NULL )                  /* schwerer Fehler aufgetreten? */
  86.       {
  87.      CloseAll();                    /* ja, dann alle Windows schließen */
  88.      CloseTool();                   /* Toolbox schließen */
  89.      return( 1 );                   /* Programm abbrechen */
  90.       }
  91.  
  92.       m2 = m1;                          /* gewählten Menüpunkt beim nächsten
  93.                        mal aufrufen */
  94.  
  95. if( select == 2 )                 /* Hilfe (F1) gedrückt? */
  96.       {
  97.      if( OpenWindow( &help ) == 0 ) /* Fehler beim Öffnen des Hilfe-
  98.                        Fensters aufgetreten? */
  99.      {
  100.         CloseAll();                 /* ja, dann schließe alle Windows */
  101.         CloseTool();                /* Schließe die Toolbox */
  102.         return( 1 );                /* und breche das Programm ab */
  103.      }
  104.      fastprint( 12, 12, f1, "Hier steht normalerweise der Hilfe-Text.\n\\
  105. Bitte eine beliebige Taste drücken..." );
  106.      a = getch();                         /* warte auf Tastendruck */
  107.      CloseWindow();                 /* schließe Hilfefenster wieder */
  108.       }
  109.  
  110.       if( select == 0 )                 /* einen Menüpunkt angewählt? */
  111.       {
  112.      if( m1->nr == 23 )             /* Farben-Setup angewählt? */
  113.      {
  114.         color( " Bitte passende Farbe auswählen: " );
  115.         continue;                   /* Endlosschleife von vorne begin. */
  116.      }
  117.      if( m1->nr > 30  &&  m1->nr < 33 )  /* Laufwerkszugriffe? */
  118.      {
  119.         inhalt( "A:\\", "*.*" );         /* DIR anzeigen... */
  120.         continue;                        /* Endlosschleife fortsetzen */
  121.      }
  122.         /* Hinweis: Die Funktionen "inhalt" und "color" sind in der
  123.             Shareware-Version der Toolbox NICHT enthalten! */
  124.      if( m1->nr == 04 )                  /* Menüpunkt "Ende" gewählt? */
  125.         break;                           /* ja, dann beende Endlosschl.*/
  126.      printf( "\a" );        /* sonst Signalton ausgeben */
  127.       }
  128.    }            /* Wiederholung der Endlosschleife... bis ESC im Hauptmenü
  129.            zum Beenden des Programms gedrückt wurde! */
  130.  
  131.  
  132.    if( OpenWindow( &help ) == 0 )       /* Fehler beim Öffnen des Hilfe-
  133.                        Fensters aufgetreten? */
  134.    {
  135.       CloseAll();                       /* ja, dann schließe alle Windows */
  136.       CloseTool();                      /* Schließe die Toolbox */
  137.       return( 1 );                      /* und breche das Programm ab */
  138.    }
  139.    fastprint( 15, 12, f1, "Zum Ende bitte eine beliebige Taste drücken... " );
  140.    a = getch();                         /* warte auf Tastendruck */
  141.    CloseAll();                          /* Schließe dann alle Windows */
  142.    CloseTool();                         /* Schließe die Toolbox !!! */
  143.  
  144. /* Programmende */
  145.  
  146.    return( 0 );            /* Beende Programm mit Rückgabewert "OK" */
  147.  
  148. }
  149.  
  150.