OVH Cloud OVH Cloud

Lire directement l'état des boutons de la souris

4 réponses
Avatar
Bertrand Lenoir-Welter
Salut à tous

Je cherche dans l'API une fonction qui me donnerait l'état des boutons
de la souris sans passer par les messages standard. Ca paraît tout bête
mais je sèche complètement. J'ai des cas de figure où les messages
WM_*BUTTONUP semblent se perdre, et en tout cas ma fonction
Ev*ButtonUp() n'est pas appelée par le noyau de traitement des messages.
Ca se produit sur certains portables, et heureusement c'est rarissime,
mais ça pose alors un vrai problème. Et comme j'ai pas ce genre de
matériel ici, je peux pas débugguer.

J'ai dans l'appli un timer affecté à d'autres fonctions mais qui peut
servir accessoirement à contrôler si le bouton a été relâché bien que le
message ne soit pas parvenu. Le problème est donc de pouvoir lire
directement l'état des boutons.

Il y a apparemment dans l'API une fonction PeekConsoleInput() qui
semblerait correspondre à ce que je cherche, mais qui demande un handle
que j'ai pas.

Toute idée bienvenue, même sous forme sarcastique...

A++

4 réponses

Avatar
Christian ASTOR
Bertrand Lenoir-Welter wrote:


Je cherche dans l'API une fonction qui me donnerait l'état des boutons
de la souris sans passer par les messages standard.



GetAsyncKeyState()
Avatar
Bertrand Lenoir-Welter
> GetAsyncKeyState()



Excellent ! C'est exactement ce que je cherchais. Merci Christian, me
voilà moins bête.
Avatar
Vincent Burel
"Bertrand Lenoir-Welter" wrote in message
news:42df7bfc$0$25027$
Salut à tous

Je cherche dans l'API une fonction qui me donnerait l'état des boutons
de la souris sans passer par les messages standard. Ca paraît tout bête
mais je sèche complètement. J'ai des cas de figure où les messages
WM_*BUTTONUP semblent se perdre, et en tout cas ma fonction
Ev*ButtonUp() n'est pas appelée par le noyau de traitement des messages.
Ca se produit sur certains portables, et heureusement c'est rarissime,
mais ça pose alors un vrai problème. Et comme j'ai pas ce genre de
matériel ici, je peux pas débugguer.



Notez que si vous ne faites pas de SetCapture sur un BUTTONDOWN, il se peut
que ce soit un autre controle qui recoive le BUTTONUP (si l'utilisateur
bouge sa souris entre temps).

VB
Avatar
Bertrand Lenoir-Welter
> Notez que si vous ne faites pas de SetCapture sur un BUTTONDOWN, il se peut
que ce soit un autre controle qui recoive le BUTTONUP (si l'utilisateur
bouge sa souris entre temps).



Non, la souris est bien capturée à réception du message WM_*BUTTONDOWN.
Y'a vraiment un message qui se perd et je sais pas pourquoi (pour le
test à distance chez le client, j'avais ajouté un petit bip en tête du
traitement Ev*ButtonUp(), et ça bipe pas, pourtant la fenêtre a toujours
le focus). Mais GetAsyncKeyState() résoud complètement mon problème.

Merci quand même.