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

  1. /* DEMO.C   Demonstriert die Fähigkeiten der Toolbox "WINDOW.C"
  2.         (Vollversion) und deren verschiedene Funktionen       */
  3.  
  4. #include "Window.c"    /* Toolbox einbinden */
  5.  
  6.  
  7. /* globale Strukturen deklarieren (Windows, Menüs...) */
  8.  
  9. WINDOW haupt = { 30, 3, 22, 9, 0, 0, 0, " Hauptmenü  ", 35, 0, 0, 0 };
  10. WINDOW setup = { 0, 12, 29, 8, 0, 3, 0, "[ Farben-Setup  ]", 6, 0, 0, 0 };
  11. WINDOW hilfe = { 10, 13, 60, 5, 0, 0, 0, "[ HILFE ]", 35, 0, 0, 0 };
  12. WINDOW texte = { 5, 1, 70, 23, 0, 1, 0, "< Bitte lesen: >", 32, 0, 0, 0 };
  13.  
  14. MENU setup4 = { 2, 17, 0, " Hervorgehobene Farbe f3 ", 14, 0,
  15.            0, 0, NULL, 0, 0 };
  16. MENU setup3 = { 2, 16, 0, " Hervorgehobene Farbe f2 ", 13, 0,
  17.            0, 0, &setup4, 0, 0 };
  18. MENU setup2 = { 2, 15, 0, " Hervorgehobene Farbe f1 ", 12, 0,
  19.            0, 0, &setup3, 0, 0 };
  20. MENU setup1 = { 2, 14, 0, " Standard-Farbe       f0 ", 11, 0,
  21.            &setup, 0, &setup2, 0, 0 };
  22.  
  23. MENU haupt5 = { 32, 9, 0, " Zurück zu DOS    ", 05, 0,
  24.            0, 0, 0, 0, 0 };
  25. MENU haupt4 = { 32, 8, 0, " Farben-Setup...  ", 04, 0,
  26.            0, &setup1, &haupt5, 0, 0 };
  27. MENU haupt3 = { 32, 7, 0, " Direktory        ", 03, 0,
  28.            0, 0, &haupt4, 0, 0 };
  29. MENU haupt2 = { 32, 6, 2, " Registrierung    ", 02, 0,
  30.            0, 0, &haupt3, 0, 0 };
  31. MENU haupt1 = { 32, 5, 0, " Kurzbeschreibung ", 01, 0,
  32.            &haupt, 0, &haupt2, 0, 0 };
  33.  
  34.  
  35.  
  36. /* Unterprogramme (Funktionen) */
  37.  
  38.  
  39. void gebe_farben_aus( void )
  40. {
  41.    fastprint( 28, 15, f0, " Standard-Farbe        f0 " );
  42.    fastprint( 28, 17, f1, " Hervorgehobene Farbe  f1 " );
  43.    fastprint( 28, 19, f2, " Hervorgehobene Farbe  f2 " );
  44.    fastprint( 28, 21, f3, " Hervorgehobene Farbe  f3 " );
  45.    fastprint( 20, 23, f1, " Taste F1 für kontextsensitive Hilfe drücken " );
  46.    fastprint( 17, 24, f1, " Taste ESC beendet die aktuelle Bearbeitungs-Stufe " );
  47. }
  48.  
  49.  
  50. void farben_aendern()
  51. {
  52.    haupt.wattr = f0;    /* Farbe des Window-Inhalts     */
  53.    haupt.rattr = f1;    /* Farbe des Window-Rands       */
  54.    haupt.nattr = f1;    /* Farbe der Window-Überschrift */
  55.  
  56.    setup.wattr = f0;    /* Farben des Window-Inhalts    */
  57.    setup.rattr = f2;    /* Farben des Window-Rands      */
  58.    setup.nattr = f3;    /* Farben des Window-Namens     */
  59.  
  60.    hilfe.wattr = f0;    /* Farben des Window-Inhalts    */
  61.    hilfe.rattr = f3;    /* Farben des Window-Rands      */
  62.    hilfe.nattr = f3;    /* Farben des Window-Namens     */
  63.  
  64.    texte.wattr = f0;
  65.    texte.rattr = f1;
  66.    texte.nattr = f1;
  67.  
  68.    haupt1.nattr = f0;   /* Farben der Menüpunkte        */
  69.    haupt2.nattr = f0;
  70.    haupt3.nattr = f0;
  71.    haupt4.nattr = f0;
  72.    haupt5.nattr = f0;
  73.  
  74.    setup1.nattr = f0;
  75.    setup2.nattr = f0;
  76.    setup3.nattr = f0;
  77.    setup4.nattr = f0;
  78.  
  79. }
  80.  
  81.  
  82.  
  83. void hilfen( int nr )           /* "nr" ist der ausgewählte Menüpunkt */
  84. {
  85.    int a;                       /* Hilfsvariable */
  86.  
  87.    if( OpenWindow( &hilfe ) == 0 )       /* Probleme beim Window-Öffnen? */
  88.       return;                              /* ja, dann breche Hilfe ab */
  89.  
  90.    switch( nr )                 /* Hilfe geben zum Menüpunkt ... */
  91.    {
  92.       case 1:                           /* ...Kurzbeschreibung */
  93.      fastprint( 13, 15, f0, "Beschreibt die Fähigkeiten der Toolbox" );
  94.      break;
  95.       case 2:                           /* ...Registrierung */
  96.      fastprint( 13, 15, f0, "Erklärt Themen wie Shareware und Bestellung" );
  97.      break;
  98.       case 3:                           /* ...Direktory */
  99.      fastprint( 13, 15, f0, "Zeigt das Inhaltsverzeichnis eines Laufwerks" );
  100.      break;
  101.       case 4:                           /* ...Farben-Setup */
  102.      fastprint( 13, 15, f0, "Hier können die aktuellen Farben geändert werden" );
  103.      break;
  104.       case 5:                           /* ...Zurück zu DOS */
  105.      fastprint( 13, 15, f0, "Beendet dieses DEMO und geht zu DOS zurück" );
  106.      break;
  107.       case 11:                          /* ...Standard-Farbe f0 */
  108.      fastprint( 13, 15, f0, "Ändern der aktuellen Standard-Farbe\n(globale Variable 'f0')" );
  109.      break;
  110.       case 12:                          /* ...Hervorgehobene Farbe f1 */
  111.       case 13:                          /* ... "             "     f2 */
  112.       case 14:                          /* ... "             "     f3 */
  113.      fastprint( 13, 15, f0, "Ändern der aktuellen hervorgehobenen Farbe\n(globale Variablen 'f1' bis 'f3')" );
  114.      break;
  115.       default:                          /* sonstige Hilfen sind unbekannt */
  116.      fastprint( 13, 15, f1, "Es ist keine Hilfe hierzu verfügbar!" );
  117.    }
  118.  
  119.       fastprint( 42, 17, f3, "weiter mit Tastendruck..." );
  120.  
  121.       a = getch();                 /* Warte auf Tastendruck */
  122.       if( a == 0  ||  a == 0xE0)   /* Erweiterter Tastencode? */
  123.      a = getch();              /* ja, dann aus Tastatur-Puffer löschen */
  124.  
  125.       CloseWindow();            /* Schließe Hilfe-Fenster */
  126. }
  127.  
  128.  
  129.  
  130. void werbung( void )
  131. {
  132.    int a;
  133.  
  134.    if( OpenWindow( &texte ) == 0 )      /* Probleme beim Window-Öffnen? */
  135.       return;                           /* ja, dann Abbruch */
  136.  
  137.    fastprint( 8, 3, f0, "Dieses Programm wurde ausschließlich mit Hilfe der Toolbox     " );
  138.    fastprint( 8, 4, f0, "WINDOW.C und den Standard-Funktionen von Quick-C v2.0          " );
  139.    fastprint( 8, 5, f0, "programmiert. Es zeigt nicht nur, welche leistungsfähigen      " );
  140.    fastprint( 8, 6, f0, "Funktionen die Toolbox bietet, sondern auch, wie einfach die     " );
  141.    fastprint( 8, 7, f0, "Toolbox angewendet werden kann. Der Quelltext dieses Demo's    " );
  142.    fastprint( 8, 8, f0, "befindet sich ebenfalls auf der Diskette. Dadurch kann der     " );
  143.    fastprint( 8, 9, f0, "Lernende viele Anregungen, Tips und Tricks aus der Analyse des " );
  144.    fastprint( 8,10, f0, "kommentierten Quellcodes gewinnen." );
  145.    fastprint( 8, 12, f1, "(C)opyright by:  Jürgen Altfeld" );
  146.    fastprint( 25, 13, f1, "Hofkurat-Diehl-Str. 7\n\nD-8042 Oberschleißheim bei München" );
  147.    fastprint( 8, 17, f2, "Hinweis für Händler:  Dies ist ein Shareware-Produkt. Die" );
  148.    fastprint( 30, 18, f2, "Vertriebsbedingungen können der Textdatei" );
  149.    fastprint( 30, 19, f2, "README.DOC entnommen werden!" );
  150.    fastprint( 8, 21, f3, "Spielen Sie doch einmal mit den einzelnen Menüpunkten des Demo's!" );
  151.    fastprint( 47, 23, f1, "weiter mit Tastendruck..." );
  152.  
  153.    a = getch();                 /* Warte auf Tastendruck */
  154.    if( a == 0  ||  a == 0xE0)   /* Erweiterter Tastencode? */
  155.       a = getch();              /* ja, dann aus Tastatur-Puffer löschen */
  156.  
  157.    CloseWindow();            /* Schließe Hilfe-Fenster */
  158. }
  159.  
  160.  
  161.  
  162. void kurzbs( void )
  163. {
  164.    int a;
  165.  
  166.    if( OpenWindow( &texte ) == 0 )      /* Probleme beim Window-Öffnen? */
  167.       return;                           /* ja, dann Abbruch */
  168.  
  169.    fastprint( 29, 1, f2, "< Kurzbeschreibung >" );
  170.    fastprint( 8, 4, f0, "Die Toolbox WINDOW.C bietet umfassende und einfach verwendbare " );
  171.    fastprint( 8, 5, f0, "Funktionen, um Windows, Menüs und Dialogboxen in kürzester Zeit" );
  172.    fastprint( 8, 6, f0, "zu erstellen. Hierzu stehen über 20 neue Funktionen zur Verfü- " );
  173.    fastprint( 8, 7, f0, "gung, u. a. auch Routinen für die komfortable Stringeingabe! Da" );
  174.    fastprint( 8, 8, f0, "der Quelltext bereits in der Shareware-Version mitgeliefert    " );
  175.    fastprint( 8, 9, f0, "wird, können die Programme in jedem Speichermodell (Small bis  " );
  176.    fastprint( 8,10, f0, "Huge) kompiliert werden! Die Quick-C-Benutzeroberfläche wird   " );
  177.    fastprint( 8,11, f0, "voll unterstützt (debuggen...)!" );
  178.    fastprint( 8,13, f0, "Zeit ist Geld! Greifen Sie lieber gleich zur Toolbox WINDOW.C  " );
  179.    fastprint( 8,14, f0, "und verwenden Sie Ihre kostbare Zeit für die Entwicklung des   " );
  180.    fastprint( 8,15, f0, "eigentlichen Programmes. In dieser Toolbox stecken weit mehr   " );
  181.    fastprint( 8,16, f0, "als 200 (zweihundert!) ganze Arbeits-Stunden!" );
  182.    fastprint( 8,18, f0, "Zeitkritische Routinen wurden in Assembler geschrieben, alle   " );
  183.    fastprint( 8,19, f0, "gängigen Grafikkarten werden unterstützt, die gewerbliche      " );
  184.    fastprint( 8,20, f1, "Nutzung der registrierten Toolbox ist ohne weitere Gebühren-   " );
  185.    fastprint( 8,21, f1, "zahlung erlaubt (keine Run-Time-Lizenzen erforderlich)!!!" );
  186.  
  187.    fastprint( 47, 23, f1, "weiter mit Tastendruck..." );
  188.    a = getch();                 /* Warte auf Tastendruck */
  189.    if( a == 0  ||  a == 0xE0)   /* Erweiterter Tastencode? */
  190.       a = getch();              /* ja, dann aus Tastatur-Puffer löschen */
  191.  
  192.    CloseWindow();            /* Schließe Hilfe-Fenster */
  193. }
  194.  
  195.  
  196.  
  197. void registrierung( void )
  198. {
  199.    int a;
  200.  
  201.    if( OpenWindow( &texte ) == 0 )      /* Probleme beim Window-Öffnen? */
  202.       return;                           /* ja, dann Abbruch */
  203.  
  204.    fastprint( 31, 1, f2, "< Registrierung >" );
  205.    fastprint( 8, 3, f0, "Der Textdatei README.DOC können Sie entnehmen, ob diese        " );
  206.    fastprint( 8, 4, f0, "Diskette die Shareware- oder Vollversion der Toolbox ist. Die  " );
  207.    fastprint( 8, 5, f0, "Shareware-Version darf nur zum Kennenlernen und Austesten der  " );
  208.    fastprint( 8, 6, f0, "Möglichkeiten der Toolbox verwendet werden! Wenn Sie sich ent- " );
  209.    fastprint( 8, 7, f0, "schieden haben, die Toolbox für Ihre eigenen Programme zu ver- " );
  210.    fastprint( 8, 8, f0, "wenden, müssen Sie sich registrieren lassen! 'Registrieren'    " );
  211.    fastprint( 8, 9, f0, "bedeutet, daß Sie die Vollversion kaufen." );
  212.    fastprint( 8,11, f0, "Eine Registrierung bietet viele Vorteile: Sie erhalten die     " );
  213.    fastprint( 8,12, f0, "neueste Version der Toolbox (einschließlich Quellcode, den Sie " );
  214.    fastprint( 8,13, f0, "sogar ändern dürfen!), Sie dürfen die Toolbox dann KOSTENLOS   " );
  215.    fastprint( 8,14, f0, "für gewerbliche Zwecke verwenden, die Dokumentation wird als   " );
  216.    fastprint( 8,15, f0, "druckfertig formatierte Datei mitgeliefert u. v. m.!!!" );
  217.    fastprint( 8,17, f1, "Bitte verwenden Sie zum Bestellen das beiliegende Bestell-     " );
  218.    fastprint( 8,18, f1, "Formular (Datei 'BESTELL.DOC'). Sie können das Bestell-Formular" );
  219.    fastprint( 8,19, f1, "innerhalb von DOS auf den Drucker ausgeben, indem Sie nach dem " );
  220.    fastprint( 8,20, f1, "Prompt folgendes eingeben: 'copy bestell.doc prn' " );
  221.  
  222.    fastprint( 47, 23, f1, "weiter mit Tastendruck..." );
  223.    a = getch();                 /* Warte auf Tastendruck */
  224.    if( a == 0  ||  a == 0xE0)   /* Erweiterter Tastencode? */
  225.       a = getch();              /* ja, dann aus Tastatur-Puffer löschen */
  226.  
  227.    CloseWindow();            /* Schließe Hilfe-Fenster */
  228. }
  229.  
  230.  
  231. int main()
  232. {
  233.  
  234. /* Variablen deklarieren */
  235.  
  236.    MENU *wahl;          /* Hilfesvariablen */
  237.    int   i;
  238.  
  239. /* Toolbox vor Benutzung öffnen */
  240.  
  241.    if( OpenTool() == 0 )                /* Fehler aufgetreten? */
  242.       return( 1 );                      /* ja, dann beende Hauptprogramm */
  243.  
  244. /* Menüs vor Benutzung vorbereiten (Zeiger-Verkettungen etc.) */
  245.  
  246.    PrepareMenu( &haupt1, NULL );
  247.    farben_aendern();     /* Window-Farben initialisieren */
  248.  
  249. /* Verschiedene Informationen ausgeben */
  250.  
  251.    werbung();
  252.    gebe_farben_aus();                   /* aktuelle Farben anzeigen */
  253.  
  254. /* Hauptschleife: Hauptmenü aufrufen und Menüwahl auswerten */
  255.  
  256.    wahl = &haupt1;                      /* Erster Menüpunkt im Hauptmenü */
  257.  
  258.    while( 1 == 1 )                      /* künstliche Endlosschleife */
  259.    {
  260.       wahl = UseMenu( wahl );
  261.  
  262.       if( select == 1  ||  (wahl->nr == 5  && select == 0) )  /* Zurück zu DOS */
  263.      break;                      /* Beende Endlosschleife und Programm */
  264.       if( select == 2 )                    /* F1 für Hilfe gedrückt? */
  265.       {
  266.      hilfen( wahl->nr );                /* ja, dann Hilfe anzeigen */
  267.      continue;                         /* wiederhole Schleife von vorne */
  268.       }
  269.       if( select == 3 )                    /* Interner Toolboxfehler? */
  270.      break;                            /* ja, dann beende Programm */
  271.  
  272.       if( wahl->nr == 3 )                  /* Direktory? */
  273.       {
  274.      inhalt( "A:\\", "*.*" );          /* ja, dann DIR anzeigen */
  275.      continue;                         /* danach Schleife wiederholen */
  276.       }
  277.  
  278.       if( select != 0 )                    /* ENTER-Taste gedrückt? */
  279.      continue;                         /* nein, dann Schleife wiederh. */
  280.  
  281.       CloseAll();                          /* Alle Windows schließen, damit
  282.                           die gewählten Farben richtig
  283.                           angezeigt werden können!     */
  284.  
  285.       switch( wahl->nr )                   /* Auswertung der Menüwahl */
  286.       {
  287.      case 11:                          /* Standard-Farbe */
  288.         i = color( "Standard-Farbe auswählen:" );
  289.         if( i == -1 )                  /* Farbenwahl mit ESC abgebr.? */
  290.            break;
  291.         f0 = i;
  292.         break;
  293.      case 12:
  294.         i = color( "Hervorgehobene Farbe f1 auswählen:" );
  295.         if( i == -1 )                  /* ESC ? */
  296.            break;
  297.         f1 = i;
  298.         break;
  299.      case 13:
  300.         i = color( "Hervorgehobene Farbe f2 auswählen:" );
  301.         if( i == -1 )                  /* ESC ? */
  302.            break;
  303.         f2 = i;
  304.         break;
  305.      case 14:
  306.         i = color( "Hervorgehobene Farbe f3 auswählen:" );
  307.         if( i == -1 )                  /* ESC ? */
  308.            break;
  309.         f3 = i;
  310.         break;
  311.      case 1:
  312.         kurzbs();                   /* Kurzbeschreibung ausgeben */
  313.         break;
  314.      case 2:
  315.         registrierung();            /* Registrierungs-Hinweise ausgeb. */
  316.         break;
  317.  
  318.       }     /* Ende SWITCH */
  319.  
  320.       farben_aendern();          /* evtle. neue Farben setzen */
  321.       gebe_farben_aus();                /* aktuelle Farben anzeigen */
  322.  
  323.    }    /* Endlosschleife wiederholen */
  324.  
  325.    set_textmode();                         /* Bildschirm löschen! */
  326.    CloseTool();                            /* Toolbox schließen !!! */
  327.  
  328. }       /* Ende Hauptprogramm */
  329.  
  330.