WM _ NCHITTEST-Nachricht
Wird an ein Fenster gesendet, um zu bestimmen, welcher Teil des Fensters einer bestimmten Bildschirmkoordinate entspricht. Dies kann z. B. auftreten, wenn der Cursor bewegt wird, wenn eine Maustaste gedrückt oder losgelassen wird oder als Reaktion auf einen Aufruf einer Funktion wie WindowFromPoint. Wenn die Maus nicht erfasst wird, wird die Nachricht an das Fenster unterhalb des Cursors gesendet. Andernfalls wird die Nachricht an das Fenster gesendet, das die Maus erfasst hat.
Ein Fenster empfängt diese Meldung über seine WindowProc-Funktion.
#define WM_NCHITTEST 0x0084
Parameter
-
wParam
-
Dieser Parameter wird nicht verwendet.
-
lParam
-
Das Wort mit niedriger Reihenfolge gibt die x-Koordinate des Cursors an. Die Koordinate ist relativ zur oberen linken Ecke des Bildschirms.
Das Wort in hoher Reihenfolge gibt die y-Koordinate des Cursors an. Die Koordinate ist relativ zur oberen linken Ecke des Bildschirms.
Rückgabewert
Der Rückgabewert der DefWindowProc-Funktion ist einer der folgenden Werte, der die Position des Cursor-Hotspots angibt.
| Rückgabecode/-wert | BESCHREIBUNG |
|---|---|
|
Im Rahmen eines Fensters, das keinen Größenrahmen besitzt. |
|
Im unteren horizontalen Rahmen eines Fensters, in dem die Größe geändert werden kann (der Benutzer kann mit der Maus darauf klicken, um die Größe des Fensters vertikal zu ändern). |
|
In der unteren linken Ecke eines Rahmens eines Fensters mit größenveränderbarer Größe (der Benutzer kann mit der Maus klicken, um die Größe des Fensters diagonal zu ändern). |
|
In der unteren rechten Ecke eines Rahmens eines Fensters mit Größenänderung (der Benutzer kann mit der Maus klicken, um die Größe des Fensters diagonal zu ändern). |
|
In einer Titelleiste. |
|
In einem Clientbereich. |
|
In einer Schaltfläche Schließen. |
|
Auf dem Bildschirmhintergrund oder auf einer Trennlinie zwischen Fenstern (identisch mit HTNOWHERE, mit der Ausnahme, dass die DefWindowProc-Funktion einen Systemsignal erzeugt, um auf einen Fehler hinzuweisen). |
|
In einem Größenfeld (identisch mit HTSIZE). |
|
In einer Hilfeschaltfläche. |
|
In einer horizontalen Bildlaufleiste. |
|
Im linken Rahmen eines Fensters, in dem die Größe geändert werden kann (der Benutzer kann mit der Maus darauf klicken, um die Größe des Fensters horizontal zu ändern). |
|
In einem Menü. |
|
In einer Schaltfläche Maximieren. |
|
In einer Schaltfläche Minimieren. |
|
Auf dem Bildschirmhintergrund oder auf einer Trennlinie zwischen Fenstern. |
|
In einer Schaltfläche Minimieren. |
|
Im rechten Rahmen eines fenstergrößerbaren Fensters (der Benutzer kann mit der Maus klicken, um die Größe des Fensters horizontal zu ändern). |
|
In einem Größenfeld (identisch mit HTGROWBOX). |
|
In einem Fenstermenü oder in einer Schaltfläche Schließen in einem untergeordneten Fenster. |
|
Im oberen horizontalen Rahmen eines Fensters. |
|
In der oberen linken Ecke eines Fensterrahmens. |
|
In der oberen rechten Ecke eines Fensterrahmens. |
|
In einem Fenster, das derzeit von einem anderen Fenster im gleichen Thread abgedeckt wird (die Meldung wird an zugrunde liegende Fenster im gleichen Thread gesendet, bis einer von ihnen einen Code zurückgibt, der nicht HTTRANSPARENT ist). |
|
In der vertikalen Bildlaufleiste. |
|
In einer Schaltfläche Maximieren. |
Bemerkungen
Verwenden Sie den folgenden Code, um die horizontale und vertikale Position abzurufen:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Wie oben erwähnt, befindet sich die x-Koordinate in der unteren Reihenfolge unter dem Rückgabewert. die y-Koordinate ist in der hohen Reihenfolge kurz (beide stellen Signiertwerte dar, da sie negative Werte auf Systemen mit mehreren Monitoren annehmen können). Wenn der Rückgabewert einer Variablen zugewiesen wird, können Sie das MAKEPOINTS-Makro verwenden, um eine POINTS-Struktur aus dem Rückgabewert abzurufen. Sie können auch das MAKRO GET _ X _ LPARAM oder GET _ Y _ LPARAM verwenden, um die x- oder y-Koordinate zu extrahieren.
Wichtig
Verwenden Sie nicht die LOWORD- oder HIWORD-Makros, um die x- und y-Koordinaten der Cursorposition zu extrahieren, da diese Makros falsche Ergebnisse auf Systemen mit mehreren Monitoren zurückgeben. 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: Wenn Sie benutzerdefinierte Frames erstellen, die die Standardbeschriftungsschaltflächen enthalten, sollte diese Meldung zuerst an die DwmDefWindowProc-Funktion übergeben werden. Dadurch kann der Desktopfenster-Manager (DWM) Treffertests für die Schaltflächen für Untertitel bereitstellen. Wenn DwmDefWindowProc die Nachricht nicht verarbeitet, ist möglicherweise eine weitere Verarbeitung von WM _ NCHITTEST erforderlich.
Requirements (Anforderungen)
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
Windows 2000 Professional [nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
Windows 2000 Server [nur Desktop-Apps] |
| Header |
|
Weitere Informationen
-
Verweis
-
Konzept
-
Andere Ressourcen