Il messaggio WM_NCHITTEST

Ogni volta che si verifica un evento del mouse, il sistema invia un messaggio WM_NCHITTEST a una finestra che contiene il punto caldo del cursore oppure la finestra che ha catturato il mouse. Il sistema utilizza questo messaggio per determinare se inviare un client area o non client zona del mouse messaggio. Un'applicazione che deve ricevere messaggi di pulsante del mouse e movimento del mouse deve passare il messaggio WM_NCHITTEST alla funzione DefWindowProc.

Il parametro lParam del messaggio WM_NCHITTEST contiene le coordinate dello schermo del punto caldo del cursore. La funzione DefWindowProc esamina le coordinate e restituisce un valore di hit test che identifica la posizione dell'area sensibile. Il valore di hit test può essere uno dei seguenti valori.

Valore Ubicazione del punto caldo
HTBORDER Alla frontiera di una finestra che non dispone di un bordo di ridimensionamento
HTBOTTOM Nel bordo orizzontale inferiore di una finestra
HTBOTTOMLEFT Nell'angolo inferiore sinistro di un bordo di finestra
HTBOTTOMRIGHT In basso a destra di un bordo di finestra
HTCAPTION Una barra del titolo
HTCLIENT In un'area client
HTCLOSE Nel pulsante Chiudi.
HTERROR Sullo sfondo dello schermo o su una linea di demarcazione tra le finestre (Idem come HTNOWHERE, salvo che la funzione DefWindowProc produce un beep di sistema per indicare un errore)
HTGROWBOX In una finestra di dimensioni (analogo a HTSIZE)
HTHELP Nel pulsante Guida.
HTHSCROLL In una barra di scorrimento orizzontale
HTLEFT Nel bordo sinistro di una finestra
HTMENU In un menu
HTMAXBUTTON Nel pulsante Ingrandisci.
HTMINBUTTON Nel pulsante Riduci a icona.
HTNOWHERE Sullo sfondo dello schermo o su una linea di demarcazione tra le finestre
HTREDUCE In un pulsante Riduci a icona
HTRIGHT Nel bordo destro di una finestra
HTSIZE In una finestra di dimensioni (analogo a HTGROWBOX)
HTSYSMENU In un menu di sistema o in un pulsante Chiudi in una finestra figlio
HTTOP Nel bordo superiore orizzontale di una finestra
HTTOPLEFT Nell'angolo superiore sinistro di un bordo di finestra
HTTOPRIGHT In alto a destra di un bordo di finestra
HTTRANSPARENT In una finestra attualmente coperta da un'altra finestra in stesso thread
HTVSCROLL Nella barra di scorrimento verticale
HTZOOM In un pulsante Ingrandisci

Se il cursore è nell'area client di una finestra, DefWindowProc restituisce il valore di hit test HTCLIENT routine di finestra. Quando la routine della finestra restituisce questo codice al sistema, il sistema converte le coordinate dello schermo del punto caldo del cursore client e quindi registra il client appropriato messaggio di zona del mouse.

La funzione DefWindowProc restituisce uno dei valori di altre hit test quando il punto caldo del cursore è in area non client di una finestra. Quando la routine della finestra restituisce uno dei valori seguenti hit test, il sistema invia un non client messaggio di zona del mouse, ponendo il valore dell'hit test in parametro wParam del messaggio e le coordinate del cursore nel parametro lParam.

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index