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é.

Était-ce utile?

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.

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