Come verificare se un mouse è sopra un controllo
-
12-10-2019 - |
Domanda
Come si fa a controllo se il mouse si trova sopra una certa HWND? Ho provato con i messaggi WM_MOUSELEAVE e WM_MOUSEMOVE per tenere traccia, ma se si fa clic su un pulsante e trascinare il mouse fuori del pulsante, non riceve il WM_MOUSELEAVE fino a quando il mouse viene rilasciato, che è troppo tardi, perché:
Quando si fa clic su un pulsante, il messaggio WM_COMMAND viene inviato solo se:
1. Il mouse è stato originariamente depresso sopra il pulsante
2. Il mouse è sopra il pulsante
3. Il mouse viene rilasciato il pulsante
ho bisogno di replicare questa funzionalità.
Soluzione
Per duplicare questa funzionalità, basta SetCapture()
chiamata in modo che i messaggi del mouse sono inviati alla finestra, anche se le foglie del mouse IT. È possibile leggere la posizione corrente del mouse mentre si muove e determinare se è ancora sopra la finestra del tasto / (Non sono ancora al 100% sicuro di quello che si sta facendo). E, quando il pulsante del mouse viene rilasciato, è possibile chiamare ReleaseCapture()
per ripristinare in cui i messaggi vengono inviati del mouse.
EDIT:. Oh, ed è possibile utilizzare la funzione API di Windows WindowFromPoint()
per determinare quale finestra il mouse si trova sopra
Altri suggerimenti
Questa è built-in a Windows, si chiama 'acquisizione di mouse', SetCapture (hWnd). Esso vi permette di ricevere messaggi del mouse, anche se il mouse si è spostato al di fuori della finestra. Si chiama sul messaggio di notifica WM_LBUTTONDOWN.