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
HTBORDER
18
Nel bordo di una finestra che non dispone di un bordo di ridimensionamento.
HTBOTTOM
15
Nel bordo inferiore orizzontale di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra verticalmente).
HTBOTTOMLEFT
16
Nell'angolo inferiore sinistro di un bordo di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra in diagonale).
HTBOTTOMRIGHT
17
Nell'angolo inferiore destro di un bordo di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra in diagonale).
HTCAPTION
2
In una barra del titolo.
HTCLIENT
1
In un'area client.
HTCLO edizione Standard
20
In un pulsante Chiudi .
HTERROR
-2
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).
HTGROWBOX
4
In una casella di dimensioni (uguale a HTSIZE).
HTHELP
21
In un pulsante ?
HTHSCROLL
6
In una barra di scorrimento orizzontale.
HTLEFT
10
Nel bordo sinistro di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra orizzontalmente).
HTMENU
5
In un menu.
HTMAXBUTTON
9
In un pulsante Ingrandisci .
HTMINBUTTON
8
In un pulsante Riduci a icona .
HTNOWHERE
0
Sullo sfondo dello schermo o su una linea di divisione tra finestre.
HTREDUCE
8
In un pulsante Riduci a icona .
HTRIGHT
11
Nel bordo destro di una finestra ridimensionabile (l'utente può fare clic sul mouse per ridimensionare la finestra orizzontalmente).
HTSIZE
4
In una casella di dimensioni (uguale a HTGROWBOX).
HTSYSMENU
3
In un menu della finestra o in un pulsante Chiudi in una finestra figlio.
HTTOP
12
Nel bordo superiore orizzontale di una finestra.
HTTOPLEFT
13
Nell'angolo superiore sinistro di un bordo finestra.
HTTOPRIGHT
14
Nell'angolo superiore destro di un bordo finestra.
HTTRANSPARENT
-1
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).
HTVSCROLL
7
Nella barra di scorrimento verticale.
HTZOOM
9
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
Winuser.h (include Windowsx.h)

Vedi anche

Riferimento

Defwindowproc

GET_X_LPARAM

GET_Y_LPARAM

Concettuale

Mouse Input

Altre risorse

MAKEPOINTS

PUNTI