Cómo comprobar si un ratón está sobre un control
-
12-10-2019 - |
Pregunta
¿Cómo hace una verificación si el ratón está sobre un cierto HWND? He intentado usar los mensajes WM_MOUSELEAVE y WM_MOUSEMOVE para realizar un seguimiento, pero si hace clic en un botón y arrastre el ratón fuera del botón, que no recibe la WM_MOUSELEAVE hasta que se suelte el ratón, que es demasiado tarde, ya que:
Al hacer clic en un botón, el mensaje WM_COMMAND sólo se envía si:
1. El ratón fue presionado inicialmente sobre el botón
2. El ratón está sobre el botón
3. El ratón se libera el botón
necesito para replicar esta funcionalidad.
Solución
Para duplicar esta funcionalidad, simplemente SetCapture()
llamada para que los mensajes de ratón se envían a la ventana, incluso si las hojas de ratón de TI. Puede leer la posición actual del ratón mientras se mueve y determinar si todavía está por encima de su ventana de botón / (I todavía no es 100% estoy seguro de lo que está haciendo). Y, cuando se suelta el botón del ratón, se puede llamar ReleaseCapture()
para restaurar la que se envían mensajes de ratón.
EDIT:. Ah, y se puede utilizar el WindowFromPoint()
función API de Windows para determinar qué ventana el ratón está sobre
Otros consejos
Este es incorporada a Windows, se le llama 'la captura del mouse', SetCapture (hWnd). Se asegura de que obtiene mensajes de ratón pesar de que el ratón se ha movido fuera de la ventana. Usted lo llama en la notificación de mensajes WM_LBUTTONDOWN.