Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[C++/Windows]question simplette de debutant: sur GetMessage

2 réponses
Avatar
heinquoi
Bjr,
Dans de nbreux exemple de code Windows en C++, je vois
GetMessage(&msg, NULL, 0,0)

Est ce que pour optimiser il ne faudrait pas plutot ecrire:
GetMessage(&msg, hWnd, 0,0) // hWnd = HWND de la fenetre

En effet le 2eme argument correspont au HWND de la fenetre de l'application
Cela devrait filtrer deja une partie des message et eviter que tout les
messages ne soit envoyé à Translatemessage.
...Sauf si pour chaque thread creé il y une file de message de creer .
Je sais pas . Pourriez vous m'aider à comprendre.
Cordialement
H

2 réponses

Avatar
Arnaud Debaene
heinquoi wrote:
Bjr,
Dans de nbreux exemple de code Windows en C++, je vois
GetMessage(&msg, NULL, 0,0)

Est ce que pour optimiser il ne faudrait pas plutot ecrire:
GetMessage(&msg, hWnd, 0,0) // hWnd = HWND de la fenetre

En effet le 2eme argument correspont au HWND de la fenetre de
l'application Cela devrait filtrer deja une partie des message et
eviter que tout les messages ne soit envoyé à Translatemessage.


Et tu les traiterais où et quand ces autres messages?

La doc est claire :
hWnd : [in] Handle to the window whose messages are to be retrieved. The
window must belong to the calling thread. The NULL value has a special
meaning:
NULL : GetMessage retrieves messages for any window that belongs to the
calling thread and thread messages posted to the calling thread using the
PostThreadMessage function.

Il peut y avoir plus d'une fenêtre mère créée dans une application et le
pompe à message du thread GUI doit traiter les messages pour toutes ces
fenêtres, plus les messages postés par PostThreadMessage.

...Sauf si pour chaque thread creé il y une file de message de creer .


Je ne comprends pas... La file de messages est créée automatiquement pour un
thread la première fois qu'une fenêtre est créée ou rattachée à ce thread,
mais il y a une file par thread, pas par fenêtre.

Arnaud
MVP - VC
Avatar
Manuel Leclerc
Arnaud Debaene a écrit:

[...] La file de messages est créée automatiquement
pour un thread la première fois qu'une fenêtre est
créée ou rattachée à ce thread, [...]



Pas tout à fait. La file est créée au premier appel
dans User32 et ce n'est pas forcément lié à une création
de fenêtre. On peut faire des GetMessage dans un thread
sans fenêtre, ça marche.