Comment vérifier si une souris est sur un contrôle
-
12-10-2019 - |
Question
Comment peut-on vérifier si la souris est sur une certaine HWND? Je l'ai essayé d'utiliser les messages WM_MOUSELEAVE et WM_MOUSEMOVE de garder une trace, mais si vous cliquez sur un bouton et faites glisser la souris sur le bouton, il ne reçoit pas le WM_MOUSELEAVE jusqu'à ce que la souris est relâché, ce qui est trop tard, parce que:
Lorsque vous cliquez sur un bouton, le message WM_COMMAND est envoyé uniquement si:
1. La souris a été enfoncé sur le bouton
2. La souris est sur le bouton
3. La souris est relâché sur le bouton
Je dois répliquer cette fonctionnalité.
La solution
Pour dupliquer cette fonctionnalité, juste SetCapture()
appel afin que les messages de la souris sont envoyés à votre fenêtre, même si les feuilles de la souris elle. Vous pouvez lire la position actuelle de la souris lors de son déplacement et de déterminer si elle est encore au-dessus de la fenêtre / bouton (je ne suis toujours pas 100% sûr de ce que vous faites). Et, lorsque le bouton de la souris est relâché, vous pouvez appeler ReleaseCapture()
pour restaurer où les messages de souris sont envoyés.
EDIT:. Oh, et vous pouvez utiliser la fonction API Windows WindowFromPoint()
pour déterminer quelle fenêtre la souris est sur
Autres conseils
Ceci est intégré à Windows, il est appelé 'capture de la souris', SetCapture (hWnd). Il vous assure des messages de souris même si la souris est déplacé à l'extérieur de la fenêtre. Vous appelez sur la notification des messages WM_LBUTTONDOWN.