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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top