Bonjour,
Je pense que jevais avoir du mal à expliquer.
L'api SendMessage permet d'envoyer un message à un controle HWND et reste bloquant jusqu'a la fin de traitement de la fonction WndProc, bref
J'aurais besoin de votre aide ,
Dans mon WndProc j'aurais besoin à moment donnée d'annuler tous les appels sendmessages à destination de mon WndProc.
Je pense que je n'aurais pas de réponse.
J'ai developper une console virtuel (HWND), et developper une fonction équivalent à scanf pour ma console virtuel.
Dés la reception de l'évenement WM_READKEY (fonction à moi WM_USER+4) , SendMessage est bloquant jusqu'a l'appuie d'une touche, jusque là c'est normal , (dependant evidemment des événément WM_CHAR et WM_KEYDOWN).
Le probléme : quand je m'amuse à resizer sans arrêt l'OS envoie un évenement WM_SIZE jusque là c'est normal, mais l'envoie de l'évenement WM_SIZE peux se bloquer car ma fonction WndProc est déjà occuper pour mon evenement WM_READKEY (qui est une fonction à moi) , du coup Windows se bloque.
Et je ne sais pas comment faire ,
la solution c'est d'annuler tous les appels WM_SIZE au moment ou le message WM_READKEY est reçu.
Dés l'appuie d'une touche , l'évenement WM_SIZE s'achéve.
et je n'ai pas de solution , et j'ai du mal à expliquer.
Donc comment annuler les sendmessages (WM_SIZE) ? est ce possible ?
Dans mon évenement WM_READKEY Si j'arrive à annuler les WM_SIZE , je pourais tripoter la fenêtre contenant ma console virtuel sans à ce que Windows se bloque.
J'envoie donc un évenement WM_READKEY pour signaler à ma console virtuelle d'attendre l'appuie d'une touche.
Bien sure le message WM_READKEY fait office de ProcessMessages (en delphi application.processmessages) utilisant l'api GetMessage TranslateMessage etc ..... logiquement il y a donc un petit recursif de l'appel à WndProc.
Pour info WM_READKEY n'existe pas dans les API Windows , mais c'est mon propre événement de message.
Merci
Partager