La programmation événementielle

Vous trouverez dans cette page, des explications succintes sur le mode de fonctionnement de WINDOWS.

Ces remarques sont faites pour donner un aperçu sur la programmation des applications pour windows.

Si vous souhaitez uniquement modifier une application existante, pour laquelle vous disposez des sources, vous pouvez aller directement aux liens suivants. On peut en effet ajouter assez simplement des contrôles ou du code dans ces sources, sans avoir besoin de connaître tout ce qui concerne la programmation événementielle.

Les menus et les contrôles de WINDOWS

Quand on ouvre une application pour WINDOWS, on trouve en général une fenêtre, qui contient un menu et des contrôles variés (comme des boutons, des boites de liste, des boîtes combinant une édition et une liste...)

Un menu se présente comme une barre horizontale, comme la barre suivante :

Fichier Edition ... Aide !

Les événements de WINDOWS

On peut activer une barre de menu, en appuyant sur la touche ALT, située à gauche de la barre d'espacement. Une fois activée, les éléments d'une barre de menu, peuvent être parcourus avec les flêches gauche et droite. Chaque élément de menu contient des items, que l'on peut saisir en utilisant les flèches haut et bas.

Quand on a sélectionné un item, on peut l'activer en appuyant sur la touche entrée (RETURN)

Les actions précédentes peuvent être réalisées avec la souris. On peut aussi réaliser ces actions en utilisant la touche ALT enfoncée en même temps qu'un caractère, qui figure en évidence dans les éléments du menu, puis en entrant un caractère mis en évidence dans les items d'un sous-menu.

On dit que ces actions réalisées au moyen de touches du clavier, ou avec la souris, constituent un événement, qui permet à la fenêtre active, d'exécuter la commande qui est associée à cet événement.

Par exemple, le menu "!" (exclamation) contient les items réDuire Agrandir... Si vous activez l'item réDuire, l'application est minimisée sur la barre des tâches. Vous pouvez rechercher une application qui est sur la barre des tâches, et vous la retrouverez alors dans l'état ou vous l'avez laissée, lors de sa réduction. Ceci permet de travailler avec plusieurs applications ouvertes simultanément, en basculant de l'une à l'autre, ce qui donne l'impression que WINDOWS est multitâches.

L'événement ALT+TAB, permet de parcourir les applications situées sur la barre des tâches, et de les amener au premier plan, quand on relache la pression sur ALT+TAB

Comment réaliser la programmation d'un menu

Je vous explique maintenant, comment réaliser la programmation d'un menu, ainsi que la manière d'associer des commandes aux événements, que celui-ci est susceptible de recevoir.

Le système WINDOWS associe à chaque action effectuée à l'aide du clavier, ou de la souris, un message comme WM_KEYDOWN, WM_KEYUP... Les messages sont placés les uns à la suite des autres, au fur et à mesure de leur arrivée, dans une queue de messages, et les messages seront traités par des fonctions spéciales, appelées procédures (call back proc) Ces procédures traiteront les événements qui leurs sont destinés, et laisseront passer les événements qui ne les concernent pas. Une procédure contient des switch qui permettent de traiter les événements, et l'on place dans les cases de ces switchs, les fonctions que l'on veut associer aux événements correspondants. On quitte alors la procédure pour revenir dans la queue des messages qui restent à traiter, et ainsi de suite, jusqu'à ce qu'il n'y ait plus de messages dans la queue.

Chaque fois que l'on revient dans l'application après l'exécution d'un événement, on parle d'une nouvelle instance de l'application. Certains événements ne sont traités, que la première fois que l'on ouvre une application (comme WM_CREATE) d'autres événements sont associés à un compte minute (comme WM_TIMER) d'autre aux événements d'un menu (comme WM_COMMAND ou WM_SYSTEM)

La programmation simplifiée par l'utilisation des objets de la classe OWL

Pour réaliser un programme pour WINDOWS, il faut commencer par créer la ressource qui correspond à un menu, définir les constantes qui correspondront aux cases des switchs, créer une fenêtre avec son menu, obtenir les messages de la queue de messages, et les envoyer à la procédure que l'on construira comme il l'a été dit plus haut.

Les premiers programmes pour WINDOWS, écrits en langage c, demandaient des centaines de lignes de code, pour réaliser ces tâches, et la lecture de la source n'était pas très aisée de ce fait. Cette réalisation est bien plus claire, en utilisant des objets dérivés des classes d'objets window. Fort heureusement, il n'est pas nécessaire de recréer soi-même toutes les fonctions utiles pour réaliser ces tâches. On se contentera de modifier quelques lignes, dans le code d'un modèle d'application, adapté à ce que l'on veut faire.

Par exemple, le modèle d'une fenêtre d'édition avec une barre de menu standard, sera obtenu en personalisant le modèle sdi (simple document interface) Il nous faudra simplement savoir, comment ajouter des éléments dans la barre de menu, avec leurs items, et construire les réponses associées à la table des événements ainsi ajoutés.

Je vous indique, dans la page suivante, comment faire ceci très simplement, en modifiant légérement le fichier .rc qui contient les ressources pour le menu d'une application sdi, et les sources .cpp, quicontiennent le code de l'application.

suivant : Création rapide d'une application sdi (simple document interface)

retour au sommaire du cours winweb