home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / c / x_lib10 / demo02.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-18  |  2.8 KB  |  172 lines

  1. /*----- demo02.cpp
  2.  
  3.     sujets :
  4.  
  5.         - création d'une fenêtre standard
  6.         - surcharge du membre on_char()
  7.  
  8. */
  9.  
  10. /*-----
  11.     définitions
  12. */
  13. #include    "xe.h"                /* gestionnaire d'événements    */
  14. #include    "xk.h"                /* constantes clavier            */
  15. #include    "xw.h"                /* gestionnaire de fenêtres        */
  16.  
  17. /*-----
  18.     classe de fenêtre MyWin
  19.  
  20.     Constructeur de MyWin :
  21.  
  22.         - titre str.
  23.  
  24.     Destructeur de MyWin :
  25.  
  26.         - aucun destructeur spécifique.
  27.  
  28.     Définition de MyWin :
  29.  
  30.         - largeur de 50 colonnes,
  31.         - hauteur de 15 lignes,
  32.         - fenêtre standard (cadre, titre, ombre, déplaçable, modale).
  33.  
  34.     Membre on_char() :
  35.  
  36.         - il est déclenché pour tout caractère non reconnu par la fenêtre
  37.           ou ses objets.
  38.  
  39.         - en paramètre, on_char() apporte le code du caractère saisi.
  40.  
  41. */
  42.  
  43. class    MyWin : public XWin
  44.         {
  45.     protected :
  46.         virtual    void    on_char (int key);
  47.  
  48.     public :
  49.         MyWin (const char *str);
  50.  
  51.         };
  52.  
  53. MyWin::MyWin (const char *str)
  54.         : XWin(50, 15)
  55.         {
  56.         /* associe un titre à la fenêtre
  57.         */
  58.         head(str);
  59.         }
  60.  
  61. void    MyWin::on_char (int key)
  62.         {
  63.         /* si caractère ESCAPE
  64.         */
  65.         if (key == xk_ESC)
  66.             /* alors ferme la fenêtre
  67.             */
  68.             hide();
  69.  
  70.         }
  71.  
  72. /*-----
  73.     app_init() - initialisation de l'application
  74.  
  75.     L'initialisation de l'application passe par :
  76.  
  77.         - l'initialisation globale du gestionnaire de fenêtres,
  78.         - l'affichage du bureau.
  79.  
  80. */
  81.  
  82. void    app_init (void)
  83.         {
  84.         /* initialise tous les gestionnaires en une seule passe
  85.         */
  86.         xw.full(1);
  87.  
  88.         /* affiche le bureau
  89.         */
  90.         xw.desk();
  91.         }
  92.  
  93. /*-----
  94.     app_quit() - terminaison de l'application
  95.  
  96.     La terminaison de l'application passe par :
  97.  
  98.         - la terminaison globale du gestionnaire de fenêtres.
  99.  
  100. */
  101.  
  102. void    app_quit (void)
  103.         {
  104.         /* quitte tous les gestionnaires en une seule passe
  105.         */
  106.         xw.full(0);
  107.         }
  108.  
  109. /*-----
  110.     app_exec() - exécution de l'application
  111.  
  112.     L'exécution de l'application passe par :
  113.  
  114.         - la création d'une fenêtre de type MyWin,
  115.         - l'ouverture de la fenêtre,
  116.         - la lecture de chaque événement,
  117.         - l'évaluation de l'événement récupéré.
  118.  
  119.     L'exécution prend fin lorsque plus aucune fenêtre ne reste ouverte.
  120.  
  121. */
  122.  
  123. void    app_exec (void)
  124.         {
  125.         XEvn    evn;
  126.         MyWin *    win;
  127.  
  128.         /* crée une fenêtre MyWin
  129.         */
  130.         win = new MyWin("MA FENETRE");
  131.  
  132.         /* ouvre la fenêtre créée
  133.         */
  134.         win->topw();
  135.  
  136.         /* boucle de lecture des événements
  137.         */
  138.         while (1)
  139.             {
  140.             /* lit le prochain événement
  141.             */
  142.             xe.next(evn);
  143.  
  144.             /* si aucune fenêtre après évaluation de l'événement récupéré
  145.             */
  146.             if (xw.eval(evn) == 0)
  147.                 /* alors quitte la boucle
  148.                 */
  149.                 break;
  150.  
  151.             }
  152.  
  153.         /* ferme et détruit la fenêtre
  154.         */
  155.         delete win;
  156.         }
  157.  
  158. void    main (void)
  159.         {
  160.         /* initialisation de l'application
  161.         */
  162.         app_init();
  163.  
  164.         /* exécution de l'application
  165.         */
  166.         app_exec();
  167.  
  168.         /* fin de l'application
  169.         */
  170.         app_quit();
  171.         }
  172.