Freigeben über


Meldung WM_NCHITTEST

Wird an ein Fenster gesendet, um zu bestimmen, welcher Teil des Fensters einer bestimmten Bildschirmkoordinate entspricht. Dies kann beispielsweise der Fall sein, wenn der Cursor bewegt wird, eine Maustaste gedrückt oder freigegeben wird, oder als Reaktion auf einen Aufruf einer Funktion wie WindowFromPoint. Wenn die Maus nicht erfasst wird, wird die Nachricht an das Fenster unter dem Cursor übermittelt. Andernfalls wird die Nachricht an das Fenster gesendet, das die Maus erfasst hat.

Ein Fenster empfängt diese Meldung über die WindowProc-Funktion.

#define WM_NCHITTEST                    0x0084

Parameter

wParam

Dieser Parameter wird nicht verwendet.

lParam

Das niederwertige Wort gibt die X-Koordinate des Cursors an. Die Koordinate ist relativ zur linken oberen Ecke des Bildschirms.

Das höherwertige Wort gibt die Y-Koordinate des Cursors an. Die Koordinate ist relativ zur linken oberen Ecke des Bildschirms.

Rückgabewert

Der Rückgabewert der Funktion DefWindowProc ist einer der folgenden Werte, der die Position des Cursor-Hotspots angibt.

Rückgabecode/-wert Beschreibung
HTBORDER
18
Im Rahmen eines Fensters, das keinen Rahmen für die Größenanpassung hat.
HTBOTTOM
15
Im unteren horizontalen Rahmen eines Fensters mit änderbarer Größe (der Benutzer kann mit der Maus klicken, um die Größe des Fensters vertikal zu ändern).
HTBOTTOMLEFT
16
In der unteren linken Ecke eines Rahmens eines Fensters mit änderbarer Größe (der Benutzer kann mit der Maus klicken, um die Größe des Fensters diagonal zu ändern).
HTBOTTOMRIGHT
17
In der unteren rechten Ecke eines Fensters mit änderbarer Größe (der Benutzer kann mit der Maus klicken, um die Größe des Fensters diagonal zu ändern).
HTCAPTION
2
In einer Titelleiste.
HTCLIENT
1
In einem Clientbereich.
HTCLOSE
20
In einer Schaltfläche Schließen.
HTERROR
-2
Auf dem Bildschirmhintergrund oder einer Trennlinie zwischen Fenstern (identisch mit HTNOWHERE mit der Ausnahme, dass die Funktion DefWindowProc einen Systemsignalton erzeugt, um einen Fehler anzuzeigen).
HTGROWBOX
4
In einem Größenfeld (identisch mit HTSIZE).
HTHELP
21
In einer Schaltfläche Hilfe.
HTHSCROLL
6
In einer horizontalen Bildlaufleiste.
HTLEFT
10
Am linken Rand eines Fensters mit änderbarer Größe (der Benutzer kann mit der Maus klicken, um die Größe des Fensters horizontal zu ändern).
HTMENU
5
In einem Menü.
HTMAXBUTTON
9
In einer Schaltfläche Maximieren.
HTMINBUTTON
8
In einer Schaltfläche Minimieren.
HTNOWHERE
0
Auf dem Bildschirmhintergrund oder einer Trennlinie zwischen Fenstern.
HTREDUCE
8
In einer Schaltfläche Minimieren.
HTRIGHT
11
Am rechten Rand eines Fensters mit änderbarer Größe (der Benutzer kann mit der Maus klicken, um die Größe des Fensters horizontal zu ändern).
HTSIZE
4
In einem Größenfeld (identisch mit HTGROWBOX).
HTSYSMENU
3
In einem Fenster-Menü oder in einer Schaltfläche Schließen in einem untergeordneten Fenster.
HTTOP
12
Im oberen horizontalen Rahmen eines Fensters.
HTTOPLEFT
13
In der oberen linken Ecke eines Fensterrahmens.
HTTOPRIGHT
14
In der oberen rechten Ecke eines Fensterrahmens.
HTTRANSPARENT
-1
In einem Fenster, das derzeit von einem anderen Fenster im selben Thread abgedeckt wird (die Meldung wird an zugrunde liegende Fenster im selben Thread gesendet, bis eines von ihnen einen Code zurückgibt, der nicht HTTRANSPARENT ist).
HTVSCROLL
7
In der vertikalen Bildlaufleiste.
HTZOOM
9
In einer Schaltfläche Maximieren.

Hinweise

Verwenden Sie den folgenden Code, um die horizontale und vertikale Position abzurufen:

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

Wie zuvor erwähnt, liegt die X-Koordinate im niedrigerwertigen short-Element des Rückgabewerts, die Y-Koordinate im höherwertigen short-Element (beide stellen Werte mit Vorzeichen Werte dar, da sie auf Systemen mit mehreren Monitoren negative Werte annehmen können). Wenn der Rückgabewert einer Variablen zugewiesen ist, können Sie das Makro MAKEPOINTS verwenden, um eine Struktur POINTS aus dem Rückgabewert abzurufen. Sie können das Makro GET_X_LPARAM oder GET_Y_LPARAM auch verwenden, um die X- bzw. Y-Koordinate zu extrahieren.

Wichtig

Verwenden Sie nicht die LOWORD- oder HIWORD-Makros, um die X- und Y-Koordinaten der Cursorposition zu extrahieren. Diese Makros geben auf Systemen mit mehreren Monitoren falsche Ergebnisse zurück. Systeme mit mehreren Monitoren können negative X- und Y-Koordinaten aufweisen, und LOWORD und HIWORD behandeln die Koordinaten als Mengen ohne Vorzeichen.

Windows Vista: Beim Erstellen benutzerdefinierter Frames, die die Standardschaltflächen Untertitel enthalten, sollte diese Meldung zuerst an die Funktion DwmDefWindowProc übergeben werden. Dadurch kann der Desktopfenster-Manager (DWM) Treffertests für die Untertitelschaltflächen bereitstellen. Wenn DwmDefWindowProc die Nachricht nicht verarbeitet, ist möglicherweise eine weitere Verarbeitung von WM_NCHITTEST erforderlich.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Winuser.h (einschließlich Windowsx.h)

Siehe auch

Referenz

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

Konzept

Mauseingabe

Weitere Ressourcen

MAKEPOINTS

POINTS