Question

Je suis conscient du fait que certains types de messages sont envoyés directement aux procédures de fenêtre, tandis que d'autres sont postés dans la file de messages d'un thread, mais je n'ai trouvé aucun moyen de déterminer si un message sera envoyé ou posté.

MSDN est à moitié utile; il a expliqué ce qui se passe , mais les exemples donnés sont vraisemblablement non exhaustif.

Existe-t-il une liste définitive des messages envoyés ou postés, ou un moyen de choisir le type de message?

Était-ce utile?

La solution

Et certains messages ne sont ni postés ni envoyés. C'est le cas de WM_PAINT, WM_TIMER et quelques autres. GetMessage les renvoie simplement lorsque la file d'attente des messages postés est vide.

Je ne sais pas quelles applications vous essayez de raccorder, mais si vous devez poser de telles questions, je suis un peu effrayé. Rien n'est plus frustrant pour un développeur de passer du temps sur les plantages signalés par les utilisateurs, mais seulement pour découvrir que la cause provient d'une autre application qui injecte du code qui se comporte mal. Marchez prudemment!

En outre, Spy ++ (outil fourni avec Visual Studio) vous indiquera quels messages sont publiés / envoyés / reçus pour toute application Windows live donnée.

Autres conseils

Utilisez InSendMessage ou InSendMessageEx pour déterminer si vous traitez un message envoyé par un appel à la SendMessage fonction.

Les pages MSDN documentant chaque message doivent être considérées comme la source faisant autorité pour cela:

  

Le message WM_LBUTTONDOWN est publié lorsque ...

     

Le message WM_SETFOCUS est envoyé à une fenêtre après ...

etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top