WM_GESTURE Nachricht
Übergibt Informationen zu einer Geste.
Parameter
-
wParam
-
Stellt Informationen zur Identifizierung des Gestenbefehls und gestenspezifischer Argumentwerte bereit. Diese Informationen sind die gleichen Informationen, die im ullArguments-Member der GESTUREINFO-Struktur übergeben werden.
-
lParam
-
Stellt ein Handle für Informationen bereit, die den Gestenbefehl und die gestenspezifischen Argumentwerte identifizieren. Diese Informationen werden durch Aufrufen von GetGestureInfo abgerufen.
Rückgabewert
Wenn eine Anwendung diese Nachricht verarbeitet, sollte sie 0 zurückgeben.
Wenn die Anwendung die Nachricht nicht verarbeitet, muss sie DefWindowProc aufrufen. Andernfalls wird der Speicher der Anwendung verloren, da der Toucheingabehandle nicht geschlossen wird und der zugeordnete Prozessspeicher nicht freigegeben wird.
Bemerkungen
In der folgenden Tabelle sind die unterstützten Gestenbefehle aufgeführt.
Gesten-ID | Wert (dwID) | BESCHREIBUNG |
---|---|---|
GID_BEGIN | 1 | Gibt an, dass eine generische Geste beginnt. |
GID_END | 2 | Gibt ein generisches Gestenende an. |
GID_ZOOM | 3 | Gibt Zoomstart, Zoombewegung oder Zoomstopp an. Die erste GID_ZOOM Befehlsmeldung beginnt einen Zoom, verursacht jedoch keinen Zoom. Der zweite GID_ZOOM Befehl löst einen Zoom relativ zum Zustand aus, der im ersten GID_ZOOM enthalten ist. |
GID_PAN | 4 | Gibt das Verschieben oder Starten des Schwenkens an. Der erste GID_PAN Befehl gibt einen Schwenkstart an, führt jedoch keine Verschiebung aus. Mit der zweiten GID_PAN Befehlsmeldung beginnt die Anwendung mit der Verschiebung. |
GID_ROTATE | 5 | Gibt an, dass der Start verschoben oder gedreht wird. Die erste GID_ROTATE-Befehlsmeldung gibt an, dass eine Drehbewegung oder eine Drehung gestartet wird, aber nicht gedreht wird. Die zweite GID_ROTATE Befehlsmeldung löst einen Rotationsvorgang relativ zum Zustand aus, der im ersten GID_ROTATE enthalten ist. |
GID_TWOFINGERTAP | 6 | Gibt eine Zwei-Finger-Tippen-Geste an. |
GID_PRESSANDTAP | 7 | Gibt die Drücken-und-Tippen-Geste an. |
Hinweis
Um die Legacyunterstützung zu aktivieren, müssen Nachrichten mit den Befehlen GID_BEGIN und GID_END Gesten mithilfe von DefWindowProc weitergeleitet werden.
In der folgenden Tabelle sind die Gestenargumente angegeben, die in den Parametern lParam und wParam übergeben werden.
Gesten-ID | Geste | ullArgument | ptsLocation in der GestureInfo-Struktur |
---|---|---|---|
GID_ZOOM | Vergrößern/Verkleineren | Gibt den Abstand zwischen den beiden Punkten an. | Gibt die Mitte des Zooms an. |
GID_PAN | Schwenken | Gibt den Abstand zwischen den beiden Punkten an. | Gibt die aktuelle Position des Schwenks an. |
GID_ROTATE | Drehen (Pivot) | Gibt den Drehwinkel an, wenn das flag GF_BEGIN festgelegt ist. Andernfalls ist dies die Winkeländerung seit Beginn der Drehung. Dies ist signiert, um die Richtung der Drehung anzugeben. Verwenden Sie die makros GID_ROTATE_ANGLE_FROM_ARGUMENT und GID_ROTATE_ANGLE_TO_ARGUMENT , um den Winkelwert abzurufen und festzulegen. | Dies gibt den Mittelpunkt der Drehung an. Dabei handelt es sich um den stationären Punkt, um den das Zielobjekt gedreht wird. |
GID_TWOFINGERTAP | Tippen mit zwei Fingern | Gibt den Abstand zwischen den beiden Fingern an. | Gibt die Mitte der beiden Finger an. |
GID_PRESSANDTAP | Drücken und Tippen | Gibt das Delta zwischen dem ersten Finger und dem zweiten Finger an. Dieser Wert wird in den unteren 32 Bits von ullArgument in einer POINT-Struktur gespeichert. | Gibt die Position an, an der der erste Finger abfällt. |
Hinweis
Alle Entfernungen und Positionen werden in physischen Bildschirmkoordinaten angegeben.
Hinweis
Die Parameter dwID und ullArgument sollten nur als Begleitdaten zu den GID_*-Befehlen betrachtet werden und nicht von Anwendungen geändert werden.
Beispiele
Der folgende Code veranschaulicht, wie Sie gestenspezifische Informationen erhalten, die dieser Nachricht zugeordnet sind.
Hinweis
Sie sollten unbehandelte Nachrichten immer an DefWindowProc weiterleiten und das Gesteneingabehandle für Nachrichten schließen, die Sie mit einem Aufruf von CloseGestureInfoHandle behandeln. In diesem Beispiel wird das Standardverhalten des Gestenhandlers unterdrückt, da das TOUCHINPUT-Handle in jedem der Gestenfälle geschlossen ist. Wenn Sie die Fälle im obigen Code für nicht behandelte Nachrichten entfernt haben, verarbeitet der Standardgestenhandler die Nachrichten, indem er im Standardfall an DefWindowProc weitergeleitet wird.
LRESULT DecodeGesture(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
// Create a structure to populate and retrieve the extra message info.
GESTUREINFO gi;
ZeroMemory(&gi, sizeof(GESTUREINFO));
gi.cbSize = sizeof(GESTUREINFO);
BOOL bResult = GetGestureInfo((HGESTUREINFO)lParam, &gi);
BOOL bHandled = FALSE;
if (bResult){
// now interpret the gesture
switch (gi.dwID){
case GID_ZOOM:
// Code for zooming goes here
bHandled = TRUE;
break;
case GID_PAN:
// Code for panning goes here
bHandled = TRUE;
break;
case GID_ROTATE:
// Code for rotation goes here
bHandled = TRUE;
break;
case GID_TWOFINGERTAP:
// Code for two-finger tap goes here
bHandled = TRUE;
break;
case GID_PRESSANDTAP:
// Code for roll over goes here
bHandled = TRUE;
break;
default:
// A gesture was not recognized
break;
}
}else{
DWORD dwErr = GetLastError();
if (dwErr > 0){
//MessageBoxW(hWnd, L"Error!", L"Could not retrieve a GESTUREINFO structure.", MB_OK);
}
}
if (bHandled){
return 0;
}else{
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2008 R2 [nur Desktop-Apps] |
Header |
|