home *** CD-ROM | disk | FTP | other *** search
- /*----- demo02.cpp
-
- sujets :
-
- - création d'une fenêtre standard
- - surcharge du membre on_char()
-
- */
-
- /*-----
- définitions
- */
- #include "xe.h" /* gestionnaire d'événements */
- #include "xk.h" /* constantes clavier */
- #include "xw.h" /* gestionnaire de fenêtres */
-
- /*-----
- classe de fenêtre MyWin
-
- Constructeur de MyWin :
-
- - titre str.
-
- Destructeur de MyWin :
-
- - aucun destructeur spécifique.
-
- Définition de MyWin :
-
- - largeur de 50 colonnes,
- - hauteur de 15 lignes,
- - fenêtre standard (cadre, titre, ombre, déplaçable, modale).
-
- Membre on_char() :
-
- - il est déclenché pour tout caractère non reconnu par la fenêtre
- ou ses objets.
-
- - en paramètre, on_char() apporte le code du caractère saisi.
-
- */
-
- class MyWin : public XWin
- {
- protected :
- virtual void on_char (int key);
-
- public :
- MyWin (const char *str);
-
- };
-
- MyWin::MyWin (const char *str)
- : XWin(50, 15)
- {
- /* associe un titre à la fenêtre
- */
- head(str);
- }
-
- void MyWin::on_char (int key)
- {
- /* si caractère ESCAPE
- */
- if (key == xk_ESC)
- /* alors ferme la fenêtre
- */
- hide();
-
- }
-
- /*-----
- app_init() - initialisation de l'application
-
- L'initialisation de l'application passe par :
-
- - l'initialisation globale du gestionnaire de fenêtres,
- - l'affichage du bureau.
-
- */
-
- void app_init (void)
- {
- /* initialise tous les gestionnaires en une seule passe
- */
- xw.full(1);
-
- /* affiche le bureau
- */
- xw.desk();
- }
-
- /*-----
- app_quit() - terminaison de l'application
-
- La terminaison de l'application passe par :
-
- - la terminaison globale du gestionnaire de fenêtres.
-
- */
-
- void app_quit (void)
- {
- /* quitte tous les gestionnaires en une seule passe
- */
- xw.full(0);
- }
-
- /*-----
- app_exec() - exécution de l'application
-
- L'exécution de l'application passe par :
-
- - la création d'une fenêtre de type MyWin,
- - l'ouverture de la fenêtre,
- - la lecture de chaque événement,
- - l'évaluation de l'événement récupéré.
-
- L'exécution prend fin lorsque plus aucune fenêtre ne reste ouverte.
-
- */
-
- void app_exec (void)
- {
- XEvn evn;
- MyWin * win;
-
- /* crée une fenêtre MyWin
- */
- win = new MyWin("MA FENETRE");
-
- /* ouvre la fenêtre créée
- */
- win->topw();
-
- /* boucle de lecture des événements
- */
- while (1)
- {
- /* lit le prochain événement
- */
- xe.next(evn);
-
- /* si aucune fenêtre après évaluation de l'événement récupéré
- */
- if (xw.eval(evn) == 0)
- /* alors quitte la boucle
- */
- break;
-
- }
-
- /* ferme et détruit la fenêtre
- */
- delete win;
- }
-
- void main (void)
- {
- /* initialisation de l'application
- */
- app_init();
-
- /* exécution de l'application
- */
- app_exec();
-
- /* fin de l'application
- */
- app_quit();
- }
-