Função SetGestureConfig (winuser.h)

Configura as mensagens enviadas de uma janela para gestos do Windows Touch.

Sintaxe

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

Parâmetros

[in] hwnd

Um identificador para a janela na qual definir a configuração de gesto.

[in] dwReserved

Esse valor é reservado e deve ser definido como 0.

[in] cIDs

Uma contagem das estruturas de configuração de gesto que estão sendo passadas.

[in] pGestureConfig

Uma matriz de estruturas de configuração de gestos que especificam a configuração de gesto.

[in] cbSize

O tamanho da estrutura de configuração de gesto (GESTURECONFIG).

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, use a função GetLastError .

Comentários

Se você não espera alterar a configuração de gesto, chame SetGestureConfig no momento da criação da janela. Se você quiser alterar dinamicamente a configuração de gesto, chame SetGestureConfig em resposta a mensagens WM_GESTURENOTIFY .

A tabela a seguir mostra os identificadores para gestos compatíveis com o membro dwID da estrutura GESTURECONFIG . Observe que definir dwID como 0 indica que os sinalizadores de configuração de gesto global estão definidos.

Nome Valor Descrição
GID_ZOOM 3 Configurações para o gesto de zoom.
GID_PAN 4 O gesto do painel.
GID_ROTATE 5 O gesto de rotação.
GID_TWOFINGERTAP 6 O gesto de toque de dois dedos.
GID_PRESSANDTAP 7 Pressione e toque no gesto.
 

Os sinalizadores a seguir são usados quando dwID é definido como zero.

Nome Valor Descrição
GC_ALLGESTURES 0x00000001 Todos os gestos.
 

Os sinalizadores a seguir são usados quando dwID é definido como GID_ZOOM.

Nome Valor Descrição
GC_ZOOM 0x00000001 O gesto de zoom.
 

Os sinalizadores a seguir são usados quando dwID é definido como GID_PAN.

Nome Valor Descrição
GC_PAN 0x00000001 Todos os gestos de painel.
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002 Painéis verticais com um dedo.
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004 Painéis horizontais com um dedo.
GC_PAN_WITH_GUTTER 0x00000008 Movimento panorâmico com um limite de sarjeta ao redor das bordas da região pannável. O limite da sarjeta limita o movimento perpendicular a uma direção primária até que um limite seja atingido para sair da sarjeta.
GC_PAN_WITH_INTERTIA 0x00000010 Movimento panorâmico com inércia para diminuir suavemente quando os gestos da panela param.
 
Nota Gestos de painel podem ser usados em conjunto entre si para controlar o comportamento. Por exemplo, definir os bits dwWant como panorâmico com um dedo horizontal e definir os bits dwBlock como verticais de dedo único restringirá o movimento panorâmico a painéis horizontais. Alterar o bit dwWant para ter GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY e remover a panela vertical de dedo único do bit dwBlock habilitará o movimento panorâmico vertical e horizontal.
 
Nota Por padrão, o movimento panorâmico tem a inércia habilitada.
 
Nota Uma única chamada para SetGestureConfig não pode incluir outros GIDs junto com 0.
 
Os sinalizadores a seguir são usados quando dwID é definido como GID_ROTATE.
Nome Valor Descrição
GC_ROTATE 0x00000001 O gesto de rotação.
 

Os sinalizadores a seguir são usados quando dwID é definido como GID_TWOFINGERTAP.

Nome Valor Descrição
GC_TWOFINGERTAP 0x00000001 O gesto de toque de dois dedos.
 

Os sinalizadores a seguir são usados quando dwID é definido como GID_PRESSANDTAP.

Nome Valor Descrição
GC_PRESSANDTAP 0x00000001 Pressione e toque no gesto.
 
Nota Chamar SetGestureConfig alterará a configuração de gesto para o tempo de vida da Janela, não apenas para o próximo gesto.
 

Exemplos

O exemplo a seguir mostra como você pode receber movimento panorâmico horizontal e vertical de dedo único sem medianiz e sem inércia. Essa é uma configuração típica para um aplicativo de navegação 2D, como o aplicativo 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();                                       
}

O exemplo a seguir mostra como receber gestos de panorâmica de dedo único e desabilitar o movimento panorâmico da sarjeta. Essa é uma configuração típica para aplicativos que rolam texto, como o Bloco de Notas.

Nota Você deve definir explicitamente todos os sinalizadores que deseja habilitar ou desabilitado ao controlar o movimento panorâmico de dedo único.
 
// 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();                                       
}   

O exemplo a seguir mostra como você pode desabilitar todos os gestos.

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

O exemplo a seguir mostra como você pode habilitar todos os gestos.

GESTURECONFIG gc = {0,GC_ALLGESTURES,0};

UINT uiGcs = 1;

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

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

O exemplo a seguir mostra como você pode habilitar todos os gestos do 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();                                       
}

A configuração de exemplo a seguir definiria a janela pai para habilitar o suporte para zoom, panorâmica horizontal e panorâmica vertical, enquanto a janela filho seria compatível apenas com a panorâmica horizontal.

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

Requisitos

   
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll

Confira também

Funções

GESTURECONFIG

GetGestureConfig

Guia de programação para gestos

WM_GESTURENOTIFY