SetGestureConfig-Funktion (winuser.h)

Konfiguriert die Nachrichten, die aus einem Fenster für Windows-Touchgesten gesendet werden.

Syntax

BOOL SetGestureConfig(
  [in] HWND           hwnd,
  [in] DWORD          dwReserved,
  [in] UINT           cIDs,
  [in] PGESTURECONFIG pGestureConfig,
  [in] UINT           cbSize
);

Parameter

[in] hwnd

Ein Handle für das Fenster zum Festlegen der Gestenkonfiguration.

[in] dwReserved

Dieser Wert ist reserviert und muss auf 0 festgelegt werden.

[in] cIDs

Eine Anzahl der Gestenkonfigurationsstrukturen, die übergeben werden.

[in] pGestureConfig

Ein Array von Gestenkonfigurationsstrukturen, die die Gestenkonfiguration angeben.

[in] cbSize

Die Größe der Gestenkonfigurationsstruktur (GESTURECONFIG).

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Verwenden Sie die GetLastError-Funktion , um erweiterte Fehlerinformationen abzurufen.

Hinweise

Wenn Sie nicht erwarten, die Gestenkonfiguration zu ändern, rufen Sie SetGestureConfig zur Fenstererstellungszeit auf. Wenn Sie die Gestenkonfiguration dynamisch ändern möchten, rufen Sie SetGestureConfig als Reaktion auf WM_GESTURENOTIFY Nachrichten auf.

Die folgende Tabelle zeigt die Bezeichner für Gesten, die vom dwID-Member der GESTURECONFIG-Struktur unterstützt werden. Beachten Sie, dass das Festlegen von dwID auf 0 angibt, dass globale Gestenkonfigurationsflags festgelegt sind.

Name Wert BESCHREIBUNG
GID_ZOOM 3 Konfigurationseinstellungen für die Zoomgeste.
GID_PAN 4 Die Schwenkbewegung.
GID_ROTATE 5 Die Drehbewegung.
GID_TWOFINGERTAP 6 Die Geste mit zwei Fingern.
GID_PRESSANDTAP 7 Die Geste zum Drücken und Tippen.
 

Die folgenden Flags werden verwendet, wenn dwID auf 0 festgelegt ist.

Name Wert BESCHREIBUNG
GC_ALLGESTURES 0x00000001 Alle Gesten.
 

Die folgenden Flags werden verwendet, wenn dwID auf GID_ZOOM festgelegt ist.

Name Wert BESCHREIBUNG
GC_ZOOM 0x00000001 Die Zoomgeste.
 

Die folgenden Flags werden verwendet, wenn dwID auf GID_PAN festgelegt ist.

Name Wert BESCHREIBUNG
GC_PAN 0x00000001 Alle Schwenkgesten.
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002 Vertikale Schwenks mit einem Finger.
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004 Horizontale Schwenks mit einem Finger.
GC_PAN_WITH_GUTTER 0x00000008 Schwenken mit einer Dachrinne um die Ränder des schwenkbaren Bereichs. Die Dachrinne begrenzt die senkrechte Bewegung zu einer Primärrichtung, bis ein Schwellenwert erreicht ist, der aus der Rinne ausbrechen kann.
GC_PAN_WITH_INTERTIA 0x00000010 Schwenken mit Inertia, um reibungslos zu verlangsamen, wenn Schwenkgesten angehalten werden.
 
Hinweis Schwenkgesten können in Verbindung miteinander verwendet werden, um das Verhalten zu steuern. Wenn Sie z. B. dwWant-Bits auf Schwenken mit horizontalem Einfinger festlegen und die dwBlock-Bits auf Vertikal mit einem Finger festlegen, wird das Schwenken auf horizontale Schwenks eingeschränkt. Das Ändern des dwWant-Bits auf GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY einen vertikalen Schwenk mit einem Finger aus dem dwBlock-Bit ermöglicht sowohl vertikales als auch horizontales Schwenken.
 
Hinweis Standardmäßig ist beim Verschieben die Inertia aktiviert.
 
Hinweis Ein einzelner Aufruf von SetGestureConfig kann keine anderen GIDs zusammen mit 0 enthalten.
 
Die folgenden Flags werden verwendet, wenn dwID auf GID_ROTATE festgelegt ist.
Name Wert BESCHREIBUNG
GC_ROTATE 0x00000001 Die Drehbewegung.
 

Die folgenden Flags werden verwendet, wenn dwID auf GID_TWOFINGERTAP festgelegt ist.

Name Wert BESCHREIBUNG
GC_TWOFINGERTAP 0x00000001 Die Geste mit zwei Fingern.
 

Die folgenden Flags werden verwendet, wenn dwID auf GID_PRESSANDTAP festgelegt ist.

Name Wert BESCHREIBUNG
GC_PRESSANDTAP 0x00000001 Die Geste zum Drücken und Tippen.
 
Hinweis Das Aufrufen von SetGestureConfig ändert die Gestenkonfiguration für die Lebensdauer des Fensters, nicht nur für die nächste Geste.
 

Beispiele

Das folgende Beispiel zeigt, wie Sie eine horizontale und vertikale Verschiebung mit nur einem Finger ohne Rinne und ohne Schwung erhalten können. Dies ist eine typische Konfiguration für eine 2D-Navigationsanwendung wie die Microsoft PixelSense Globe-Anwendung.

// set up our want / block settings
DWORD dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, dwPanWant , dwPanBlock}                     
                     };    
                     
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Das folgende Beispiel zeigt, wie Sie Schwenkgesten mit nur einem Finger empfangen und das Schwenken der Rinne deaktivieren. Dies ist eine typische Konfiguration für Anwendungen, die Text scrollen, z. B. Editor.

Hinweis Sie sollten explizit alle Flags festlegen, die aktiviert oder deaktiviert werden sollen, wenn Sie das Schwenken mit nur einem Finger steuern.
 
// set up our want / block settings
DWORD dwPanWant  = GC_PAN | GC_PAN_WITH_SINGLE_FINGER_VERTICALLY;                    
DWORD dwPanBlock = GC_PAN_WITH_GUTTER;    

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, dwPanWant , dwPanBlock}                     
                     };    
                     
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}   

Das folgende Beispiel zeigt, wie Sie alle Gesten deaktivieren können.

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {0,0,GC_ALLGESTURES};
                     
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Das folgende Beispiel zeigt, wie Sie alle Gesten aktivieren können.

GESTURECONFIG gc = {0,GC_ALLGESTURES,0};

UINT uiGcs = 1;

BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, &gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}              

Das folgende Beispiel zeigt, wie Sie alle Windows 7-Gesten aktivieren können.

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, GC_PAN , 0},
                      { GID_TWOFINGERTAP, GC_TWOFINGERTAP , 0},
                      { GID_PRESSANDTAP, GC_PRESSANDTAP , 0}
                     };    
                     
UINT uiGcs = 5;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Die folgende Beispielkonfiguration würde festlegen, dass das übergeordnete Fenster die Unterstützung für Zoom, horizontales Schwenken und vertikales Schwenken aktiviert, während das untergeordnete Fenster nur horizontal schwenken würde.

// set up our want / block settings for a parent window
DWORD dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;

// set the settings in the gesture configuration
GESTURECONFIG gcParent[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                            { GID_PAN, dwPanWant , dwPanBlock}                         
                           };    

// Set the pan settings for a child window
dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
dwPanBlock = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
                     
GESTURECONFIG gcChild[]  = {{ GID_ZOOM, 0, GC_ZOOM },
                            { GID_PAN, dwPanWant , dwPanBlock}                         
                           };    

UINT uiGcs   = 2;
BOOL bResult = FALSE;
                     
if (isParent){      
  bResult = SetGestureConfig(hWnd, 0, uiGcs, gcParent, sizeof(GESTURECONFIG));  
}else{
  bResult = SetGestureConfig(hWnd, 0, uiGcs, gcChild, sizeof(GESTURECONFIG));  
}

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll

Siehe auch

Funktionen

GESTURECONFIG

GetGestureConfig

Programmierhandbuch für Gesten

WM_GESTURENOTIFY