WM_NCHITTEST messaggio
Inviato a una finestra per determinare quale parte della finestra corrisponde a una determinata coordinata dello schermo. Ciò può verificarsi, ad esempio, quando il cursore si sposta, quando viene premuto o rilasciato un pulsante del mouse o in risposta a una chiamata a una funzione, ad esempio WindowFromPoint. Se il mouse non viene acquisito, il messaggio viene inviato alla finestra sotto il cursore. In caso contrario, il messaggio viene inviato alla finestra che ha acquisito il mouse.
Una finestra riceve questo messaggio tramite la relativa funzione WindowProc.
#define WM_NCHITTEST 0x0084
Parametri
-
wParam
-
Questo parametro non viene usato.
-
lParam
-
La parola con ordine basso specifica la coordinata x del cursore. La coordinata è relativa all'angolo superiore sinistro dello schermo.
La parola di ordine elevato specifica la coordinata y del cursore. La coordinata è relativa all'angolo superiore sinistro dello schermo.
Valore restituito
Il valore restituito della funzione DefWindowProc è uno dei valori seguenti, che indica la posizione del cursore.
Codice/valore restituito | Descrizione |
---|---|
|
Nel bordo di una finestra che non dispone di un bordo di ridimensionamento. |
|
Nel bordo inferiore orizzontale di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra verticalmente). |
|
Nell'angolo inferiore sinistro di un bordo di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra in diagonale). |
|
Nell'angolo inferiore destro di un bordo di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra in diagonale). |
|
In una barra del titolo. |
|
In un'area client. |
|
In un pulsante Chiudi . |
|
Sullo sfondo dello schermo o su una linea di divisione tra finestre (come HTNOWHERE, ad eccezione del fatto che la funzione DefWindowProc produce un segnale acustico di sistema per indicare un errore). |
|
In una casella di dimensioni (uguale a HTSIZE). |
|
In un pulsante ? |
|
In una barra di scorrimento orizzontale. |
|
Nel bordo sinistro di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra orizzontalmente). |
|
In un menu. |
|
In un pulsante Ingrandisci . |
|
In un pulsante Riduci a icona . |
|
Sullo sfondo dello schermo o su una linea di divisione tra finestre. |
|
In un pulsante Riduci a icona . |
|
Nel bordo destro di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra orizzontalmente). |
|
In una casella di dimensioni (uguale a HTGROWBOX). |
|
In un menu della finestra o in un pulsante Chiudi in una finestra figlio. |
|
Nel bordo superiore orizzontale di una finestra. |
|
Nell'angolo superiore sinistro di un bordo finestra. |
|
Nell'angolo superiore destro di un bordo finestra. |
|
In una finestra attualmente coperta da un'altra finestra nello stesso thread (il messaggio verrà inviato alle finestre sottostanti nello stesso thread fino a quando uno di essi non restituisce un codice non HTTRANSPARENT). |
|
Nella barra di scorrimento verticale. |
|
In un pulsante Ingrandisci . |
Osservazioni:
Usare il codice seguente per ottenere la posizione orizzontale e verticale:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Come indicato in precedenza, la coordinata x si trova nell'ordine inferiore del valore restituito. La coordinata y si trova nell'ordine più breve (entrambi rappresentano valori firmati perché possono accettare valori negativi nei sistemi con più monitor). Se il valore restituito viene assegnato a una variabile, è possibile utilizzare la macro MAKEPOINTS per ottenere una struttura POINTS dal valore restituito. È anche possibile utilizzare la macro GET_X_LPARAM o GET_Y_LPARAM per estrarre la coordinata x o y.
Importante
Non utilizzare le macro LOWORD o HIWORD per estrarre le coordinate x e y della posizione del cursore perché queste macro restituiscono risultati non corretti nei sistemi con più monitor. I sistemi con più monitor possono avere coordinate x e y negative e LOWORD e HIWORD considerano le coordinate come quantità non firmate.
Windows Vista: quando si creano frame personalizzati che includono i pulsanti di didascalia standard, questo messaggio deve prima essere passato alla funzione DwmDefWindowProc. Ciò consente a Desktop Window Manager (DWM) di fornire hit testing per i pulsanti didascalia s. Se DwmDefWindowProc non gestisce il messaggio, potrebbe essere necessaria un'ulteriore elaborazione di WM_NCHITTEST .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows 2000 Professional [solo app desktop] |
Server minimo supportato |
Windows 2000 Server [solo app desktop] |
Intestazione |
|
Vedi anche
-
Riferimento
-
Concettuale
-
Altre risorse