Skip to main content

                   

Coach Windows Mobile

Bienvenue dans l'atelier "Les événements et leur lien avec la boucle de messages" du Coach Windows Mobile !

Dans ce tutoriel, vous :

  • Apprendrez que Windows Mobile 6.x est un système multitâche.
  • Découvrirez ce qu'est un "message".
  • Verrez comment le framework .NET permet de traiter ces messages.

Pour compléter ce tutoriel vous devez :

  • Disposer du logiciel Visual Studio 2008. Vous pouvez télécharger gratuitement une version d’évaluation sur cette page.

Le cours et les sources de cet atelier sont disponibles en téléchargement gratuit.


Téléchargez gratuitement l'intégralité de cet atelier !

                   

Les événements et leur lien avec la boucle de messages

Windows Mobile 6.x étant un OS multitâche, il communique avec les différentes applications et fenêtres par des messages. Un message peut indiquer qu'une touche a été tapée ou qu'il faut redessiner la fenêtre après qu'une autre fenêtre se soit superposée dessus. Les messages sont stockés dans une structure spéciale. Pour les traiter il faut créer une boucle qui lira les messages que Windows place dans une file d'attente. Cette boucle renverra les messages à une procédure de fenêtre qui va les traiter les uns après les autres.

Comment ça marche ?

Ce mécanisme est complètement transparent en .NET, mais nous allons voir un peu comment il fonctionne pour mieux comprendre certains comportements du système.

Le Message

La Message contient six champs :

hwndHandle de la fenêtre destinée à recevoir le message
messageNombre identifiant le message. Ici, encore, des identificateurs facilitent la gestion des messages pour le programmeur. Ce sont des constantes qui  commencent par le préfixe WM_ (exemple: WM_CREATE est envoyé immédiatement après la création de la fenêtre).
wParamParamètre de message 32 bits utilisé pour certains messages
lParamIdem que wParam
timePermet de connaître à quelle moment le message a été placé dans la file d'attente
ptCoordonnées de la souris lors de l'arrivée du message dans la file d'attente

 

La boucle de message

En gros la boucle de message se présente comme ceci :

Tant qu’il y a un message dans la file d’attente on le récupère (GetMessage)

       Translation du message (TranslateMessage)

       Dispatch du message (DispatchMessage)

Fin Tant que

Cette boucle utilise trois fonctions. GetMessage lit les messages placés dans la liste d'attente. Si ce message est WM_QUIT, GetMessage retourne 0 pour sortir de la boucle Tant que. En l'absence de messages, l'application est au repos.

TranslateMessage repasse le message au système pour qu’il puisse faire un transcodage du clavier. Cette opération permet de traduire les événements de touche en événement de caractère. En fait, cette fonction permet, entre autre, de gérer la frappe de plusieurs touches qui produisent un caractère. Exemple: SHIFT + a donne le caractère A.

DispatchMessage repasse le message au système pour qu'il l’envoie à la procédure de fenêtre.

Vous désirez la suite ? Le cours et les sources de cet atelier sont disponibles en téléchargement gratuit.


Téléchargez gratuitement l'intégralité de cet atelier !

Version d’évaluation de Visual Studio 2008
SDK Windows Mobile 6.x
L'atelier : cours et code source



Les vidéos « 5 minutes pour comprendre Windows Mobile »
Les webcasts Windows Mobile
Le blog de Pierre Cauchois
Le site CodePPC
Le forum Windows Mobile et Embarqué
Microsoft réalise une enquête en ligne pour comprendre votre opinion sur le site Web de. Si vous choisissez de participer, l’enquête en ligne vous sera présentée lorsque vous quitterez le site Web de.

Souhaitez-vous y participer ?