Funzione SetGestureConfig (winuser.h)

Configura i messaggi inviati da una finestra per i movimenti di Windows Touch.

Sintassi

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

Parametri

[in] hwnd

Handle per la finestra in cui impostare la configurazione del movimento.

[in] dwReserved

Questo valore è riservato e deve essere impostato su 0.

[in] cIDs

Conteggio delle strutture di configurazione dei movimenti passate.

[in] pGestureConfig

Matrice di strutture di configurazione dei movimenti che specificano la configurazione del movimento.

[in] cbSize

Dimensioni della struttura di configurazione del movimento (GESTURECONFIG).

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni sull'errore estese, usare la funzione GetLastError .

Commenti

Se non si prevede di modificare la configurazione del movimento, chiamare SetGestureConfig in fase di creazione della finestra. Se si vuole modificare dinamicamente la configurazione del movimento, chiamare SetGestureConfig in risposta a WM_GESTURENOTIFY messaggi.

La tabella seguente illustra gli identificatori per i movimenti supportati dal membro dwID della struttura GESTURECONFIG . Si noti che l'impostazione di dwID su 0 indica che sono impostati flag di configurazione dei movimenti globali.

Nome Valore Descrizione
GID_ZOOM 3 Impostazioni di configurazione per il movimento di zoom.
GID_PAN 4 Movimento di panoramica.
GID_ROTATE 5 Movimento di rotazione.
GID_TWOFINGERTAP 6 Movimento di tocco a due dita.
GID_PRESSANDTAP 7 Movimento di pressione e tocco.
 

I flag seguenti vengono usati quando dwID è impostato su zero.

Nome Valore Descrizione
GC_ALLGESTURES 0x00000001 Tutti i movimenti.
 

I flag seguenti vengono usati quando dwID è impostato su GID_ZOOM.

Nome Valore Descrizione
GC_ZOOM 0x00000001 Movimento di zoom.
 

I flag seguenti vengono usati quando dwID è impostato su GID_PAN.

Nome Valore Descrizione
GC_PAN 0x00000001 Tutti i movimenti di panoramica.
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002 Panoramica verticale con un dito.
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004 Pani orizzontali con un dito.
GC_PAN_WITH_GUTTER 0x00000008 Panoramica con un limite di gutter intorno ai bordi dell'area in cui è possibile eseguire la panoramica. Il limite della barra limita il movimento perpendicolare a una direzione primaria fino a quando non viene raggiunta una soglia per uscire dalla barra.
GC_PAN_WITH_INTERTIA 0x00000010 Panoramica con inerzia per rallentare lentamente quando i movimenti di panoramica si arresta.
 
Nota I movimenti di panoramica possono essere usati in combinazione tra loro per controllare il comportamento. Ad esempio, l'impostazione dei bit dwWant su panoramica con un solo dito orizzontale e l'impostazione dei bit dwBlock su verticale con un solo dito limita la panoramica alle pani orizzontali. La modifica del bit dwWant in modo da avere GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY e rimuovere la panoramica verticale a dito singolo dal bit dwBlock consentirà la panoramica sia verticale che orizzontale.
 
Nota Per impostazione predefinita, la panoramica è abilitata.
 
Nota Una singola chiamata a SetGestureConfig non può includere altri GID insieme a 0.
 
I flag seguenti vengono usati quando dwID è impostato su GID_ROTATE.
Nome Valore Descrizione
GC_ROTATE 0x00000001 Movimento di rotazione.
 

I flag seguenti vengono usati quando dwID è impostato su GID_TWOFINGERTAP.

Nome Valore Descrizione
GC_TWOFINGERTAP 0x00000001 Movimento di tocco a due dita.
 

I flag seguenti vengono usati quando dwID è impostato su GID_PRESSANDTAP.

Nome Valore Descrizione
GC_PRESSANDTAP 0x00000001 Movimento di pressione e tocco.
 
Nota La chiamata a SetGestureConfig modificherà la configurazione del movimento per la durata della finestra, non solo per il gesto successivo.
 

Esempio

Nell'esempio seguente viene illustrato come ricevere la panoramica orizzontale e verticale con un dito singolo senza gutter e senza inerzia. Si tratta di una configurazione tipica per un'applicazione di navigazione 2D, ad esempio l'applicazione Microsoft PixelSense Globe.

// 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();                                       
}

Nell'esempio seguente viene illustrato come ricevere movimenti di panoramica con un dito e disabilitare la panoramica della barra. Si tratta di una configurazione tipica per le applicazioni che scorrono testo, ad esempio blocco note.

Nota È consigliabile impostare in modo esplicito tutti i flag che si desidera abilitare o disabilitare quando si controlla la panoramica con un solo dito.
 
// 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();                                       
}   

Nell'esempio seguente viene illustrato come disabilitare tutti i movimenti.

// 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();                                       
}

Nell'esempio seguente viene illustrato come abilitare tutti i movimenti.

GESTURECONFIG gc = {0,GC_ALLGESTURES,0};

UINT uiGcs = 1;

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

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

L'esempio seguente mostra come abilitare tutti i movimenti di Windows 7.

// 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();                                       
}

La configurazione di esempio seguente imposta la finestra padre per abilitare il supporto per lo zoom, la panoramica orizzontale e la panoramica verticale mentre la finestra figlio supporta solo la panoramica orizzontale.

// 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();                                       
}

Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll

Vedi anche

Funzioni

GESTURECONFIG

GetGestureConfig

Guida alla programmazione per i movimenti

WM_GESTURENOTIFY