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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top