Partager via


Message WM_NCHITTEST

Envoyé à une fenêtre afin de déterminer quelle partie de la fenêtre correspond à une coordonnée d’écran particulière. Cela peut se produire, par exemple, lorsque le curseur se déplace, lorsqu’un bouton de la souris est enfoncé ou relâché, ou en réponse à un appel à une fonction telle que WindowFromPoint. Si la souris n’est pas capturée, le message est envoyé dans la fenêtre située sous le curseur. Sinon, le message est envoyé dans la fenêtre qui a capturé la souris.

Une fenêtre reçoit ce message à travers sa fonction WindowProc.

#define WM_NCHITTEST                    0x0084

Paramètres

wParam

Ce paramètre n'est pas utilisé.

lParam

Le mot d’ordre inférieur spécifie la coordonnée x du curseur. La coordonnée est relative au coin supérieur gauche de l’écran.

Le mot de poids fort spécifie la coordonnée y du curseur. La coordonnée est relative au coin supérieur gauche de l’écran.

Valeur retournée

La valeur de retour de la fonction DefWindowProc est l’une des valeurs suivantes, indiquant la position de la zone réactive du curseur.

Valeur/code de retour Description
HTBORDER
18
Dans la bordure d’une fenêtre qui n’a pas de bordure de dimensionnement.
HTBOTTOM
15
Dans la bordure horizontale inférieure d’une fenêtre redimensionnable (l’utilisateur peut cliquer sur la souris pour redimensionner la fenêtre verticalement).
HTBOTTOMLEFT
16
Dans le coin inférieur gauche d’une fenêtre redimensionnable (l’utilisateur peut cliquer sur la souris pour redimensionner la fenêtre en diagonale).
HTBOTTOMRIGHT
17
Dans le coin inférieur droit d’une fenêtre redimensionnable (l’utilisateur peut cliquer sur la souris pour redimensionner la fenêtre en diagonale).
HTCAPTION
2
Dans une barre de titre.
HTCLIENT
1
Dans une zone cliente.
HTCLOSE
20
Dans un bouton Fermer.
HTERROR
-2
Sur l’arrière-plan de l’écran ou sur une ligne de séparation entre des fenêtres (identique à HTNOWHERE, sauf que la fonction DefWindowProc produit un bip système pour indiquer une erreur).
HTGROWBOX
4
Dans une zone de dimensionnement (identique à HTSIZE).
HTHELP
21
Dans un bouton Aide.
HTHSCROLL
6
Dans une barre de défilement horizontale.
HTLEFT
10
Dans la bordure gauche d’une fenêtre redimensionnable (l’utilisateur peut cliquer sur la souris pour redimensionner la fenêtre horizontalement).
HTMENU
5
Dans un menu.
HTMAXBUTTON
9
Dans un bouton Agrandir.
HTMINBUTTON
8
Dans un bouton Réduire.
HTNOWHERE
0
Sur l’arrière-plan de l’écran ou sur une ligne de séparation entre des fenêtres.
HTREDUCE
8
Dans un bouton Réduire.
HTRIGHT
11
Dans la bordure droite d’une fenêtre redimensionnable (l’utilisateur peut cliquer sur la souris pour redimensionner la fenêtre horizontalement).
HTSIZE
4
Dans une zone de dimensionnement (identique à HTGROWBOX).
HTSYSMENU
3
Dans un menu de fenêtre ou dans un bouton Fermer dans une fenêtre enfant.
HTTOP
12
Dans la bordure supérieure horizontale d’une fenêtre.
HTTOPLEFT
13
Dans le coin supérieur gauche d’une bordure de fenêtre.
HTTOPRIGHT
14
Dans le coin supérieur droit d’une bordure de fenêtre.
HTTRANSPARENT
-1
Dans une fenêtre couverte par une autre fenêtre du même thread (le message est envoyé aux fenêtres sous-jacentes du même thread jusqu’à ce que l’une d’elles retourne un code qui n’est pas HTTRANSPARENT).
HTVSCROLL
7
Dans la barre de défilement vertical.
HTZOOM
9
Dans un bouton Agrandir.

Notes

Utilisez le code suivant pour obtenir la position horizontale et verticale :

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam);

Comme indiqué ci-dessus, la coordonnée x est dans l’ordre inférieur court de la valeur de retour ; la coordonnée y est dans l’ordre supérieur court (les deux représentent des valeurs signées, car elles peuvent prendre des valeurs négatives sur des systèmes avec plusieurs moniteurs). Si la valeur retournée est affectée à une variable, vous pouvez utiliser la macro MAKEPOINTS pour obtenir une structure POINTS à partir de la valeur de retour. Vous pouvez également utiliser la macro GET_X_LPARAM ou GET_Y_LPARAM pour extraire la coordonnée x ou y.

Important

N’utilisez pas les macros LOWORD ou HIWORD pour extraire les coordonnées x et y de la position du curseur, car ces macros retournent des résultats incorrects sur les systèmes avec plusieurs moniteurs. Les systèmes avec plusieurs moniteurs peuvent avoir des coordonnées x et y négatives, et LOWORD et HIWORD traitent les coordonnées comme des quantités non signées.

Windows Vista : lors de la création de cadres personnalisés qui incluent les boutons de légende standard, ce message doit d’abord être passé à la fonction DwmDefWindowProc. Cela permet au Gestionnaire de fenêtres du Bureau de fournir des tests d’accès pour les boutons de légendes. Si DwmDefWindowProc ne gère pas le message, un traitement supplémentaire de WM_NCHITTEST peut être nécessaire.

Spécifications

Condition requise Value
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Winuser.h (y compris Windowsx.h)

Voir aussi

Référence

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

Conceptuel

Entrées de la souris

Autres ressources

MAKEPOINTS

POINTS