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. |
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.
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. |
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.
// 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 |