Les messages en API

Signaler
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
-
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
-
salut!
En API il intervient toujours cette partie de codes qui suit qui gere les messages fenetres.
J'aimerai que qq m'explique ce que font les fonctions TranslateMessage() et DispatchMessage() individuelement car j'ai remarqué que le programme agit de la meme maniere avec ou sans TranslateMessage().
J'aimerai aussi qu'on me dise a quel moment est appelée la procedure de la fenetre car je ne vois aucun code du type "NomDeLaProcedureDeFenetre();"
voici la partie de programme:

SetTimer(identifiant_fenetre,NULL,1000,NULL); //la je comprends que toutes les seconde le message WM_TIMER est envoyé

MSG message_gestion; // quel est la difference entre une variable MSG et UINT ?
while( GetMessage(&message_gestion,NULL,0,0) == TRUE ) // tant que GetMessage ne recoit pas WM_QUIT alors... ( arretez moi si je me trompe )
{
TranslateMessage(&message_gestion) // les deux fonctions que je comprends pas
DispatchMessage (&message_gestion)
}


Salut et merci bcp d'avance pour votre reponse.

:big) Adeon 8-)

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Petzold au chapitre 3 explique tout cela:
http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
MSG est une structure et UINT est un entier non signé.

GetMessage() attend qu'un message arrive dans la queue et rempli les champs de la structure.

TranslateMessage sert à transformer des combinaisons du type (WM_KEYDOWN - WM_KEY_UP) en WM_CHAR.
DispatchMessage sert à tranmettre le message à la WndProc (fait par le système)

comment?

dans la structure MSG, il y a le champ hwnd, qui est la fenêtre a qui est destinnée le message. Or à chaque fenêtre est associé une classe de fenêtre et une WndProc (la classe de fenêtre est donnée lors de CreateWindow et la WndProc lors de RegisterClass).

le système sait donc quelle fonction appeler.
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
merci bcp ymca
:big) Adeon 8-)