Message Window!

Sujets variés concernant le développement en PureBasic
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message Window!

Message par nico »

J'aimerais comprendre pourquoi certains messages sont accessibles depuis le traitement de la boucle principale Repeat Until et d'autres seulement dans le Callback et vice versa.

Il me semble que les messages liés à la cration des fenêtres ne sont pas accessibles-ok-mais pour les autres qu'en est-il?
exemple #WM_KEYDOWN REPEAT-UNTIL seulement

ET #WM_SETCURSOR CALLBACK seulement

:?:
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

C'est une bonne question et je vais essayer d'expliquer ce comportement. Sous Windows, chaque Thread a sa propre file d'évènements, et l'application les recupèrent et les gèrent grace aux commandes GetMessage_(), TranslateMessage_() et DispatchMessage_(). C'est ce que fait la commande WaitWindowEvent() du PureBasic. Jusque la, pas de soucis, tous les messages qui passent par cette voie sont gérés par la commande WaitWindowEvent(). Maintenant, certains messages sont postés directement à la callback de la fenetre (pour je ne sait quelle raison, probablement des raisons de performances ou de synchronizations) via SendMessage_(), au lieu d'utiliser PostMessage_(). Ces types d'évènement ne sont donc pas interceptés par WaitWindowEvent() car ils appellent directement la callback. Dans une appli en C, tu ne devrais pas voir la difference, parce que tu dois tout gerer dans la callback, mais en PB c'est pas la meme affaire.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Merci beaucoup pour cette info, Fred :)
Répondre