Compartilhar via


WM_GESTURE mensagem

Passa informações sobre um gesto.

Parâmetros

wParam

Fornece informações que identificam os valores de argumento específicos do gesto e do comando de gesto. Essas informações são as mesmas informações passadas no membro ullArguments da estrutura GESTUREINFO .

lParam

Fornece um identificador para informações que identificam o comando de gesto e os valores de argumento específicos do gesto. Essas informações são recuperadas chamando GetGestureInfo.

Valor retornado

Se um aplicativo processar essa mensagem, ele deverá retornar 0.

Se o aplicativo não processar a mensagem, ele deverá chamar DefWindowProc. Não fazer isso fará com que o aplicativo vaze memória porque o identificador de entrada por toque não será fechado e a memória do processo associada não será liberada.

Comentários

A tabela a seguir lista os comandos de gesto com suporte.

ID do gesto Valor (dwID) Descrição
GID_BEGIN 1 Indica que um gesto genérico está começando.
GID_END 2 Indica uma extremidade de gesto genérica.
GID_ZOOM 3 Indica o início do zoom, a movimentação de zoom ou a parada de zoom. A primeira mensagem de comando GID_ZOOM inicia um zoom, mas não causa zoom. O segundo comando GID_ZOOM dispara um zoom em relação ao estado contido no primeiro GID_ZOOM.
GID_PAN 4 Indica movimento do painel ou início do painel. O primeiro comando GID_PAN indica um início panorâmico, mas não executa nenhum movimento panorâmico. Com a segunda mensagem de comando GID_PAN , o aplicativo começará a fazer panning.
GID_ROTATE 5 Indica a rotação da movimentação ou da rotação inicial. A primeira mensagem de comando GID_ROTATE indica uma movimentação de rotação ou uma rotação inicial, mas não girará. A segunda mensagem de comando GID_ROTATE disparará uma operação de rotação em relação ao estado contido no primeiro GID_ROTATE.
GID_TWOFINGERTAP 6 Indica o gesto de toque de dois dedos.
GID_PRESSANDTAP 7 Indica o gesto de pressionar e tocar.

Observação

Para habilitar o suporte herdado, as mensagens com os comandos de gesto GID_BEGIN e GID_END precisam ser encaminhadas usando DefWindowProc.

A tabela a seguir indica os argumentos de gesto passados nos parâmetros lParam e wParam .

ID do gesto Gesto ullArgument ptsLocation na estrutura GestureInfo
GID_ZOOM Ampliar/Reduzir Indica a distância entre os dois pontos. Indica o centro do zoom.
GID_PAN Panorâmica Indica a distância entre os dois pontos. Indica a posição atual do painel.
GID_ROTATE Girar (pivô) Indica o ângulo de rotação se o sinalizador GF_BEGIN estiver definido. Caso contrário, essa é a alteração de ângulo desde que a rotação foi iniciada. Isso é assinado para indicar a direção da rotação. Use as macros GID_ROTATE_ANGLE_FROM_ARGUMENT e GID_ROTATE_ANGLE_TO_ARGUMENT para obter e definir o valor angular. Isso indica o centro da rotação que é o ponto estacionário em que o objeto de destino é girado.
GID_TWOFINGERTAP Toque de dois dedos Indica a distância entre os dois dedos. Indica o centro dos dois dedos.
GID_PRESSANDTAP Pressionar e tocar Indica o delta entre o primeiro dedo e o segundo dedo. Esse valor é armazenado nos 32 bits inferiores do ullArgument em uma estrutura POINT . Indica a posição em que o primeiro dedo aparece.

Observação

Todas as distâncias e posições são fornecidas em coordenadas de tela físicas.

Observação

Os parâmetros dwID e ullArgument só devem ser considerados como acompanhando os comandos GID_* e não devem ser alterados por aplicativos.

Exemplos

O código a seguir ilustra como obter informações específicas do gesto associadas a essa mensagem.

Observação

Você sempre deve encaminhar mensagens sem tratamento para DefWindowProc e deve fechar o identificador de entrada de gesto para mensagens que você manipula com uma chamada para CloseGestureInfoHandle. Neste exemplo, o comportamento padrão do manipulador de gestos será suprimido porque o identificador TOUCHINPUT é fechado em cada um dos casos de gesto. Se você removeu os casos no código acima para mensagens sem tratamento, o manipulador de gestos padrão processaria as mensagens sendo encaminhadas para DefWindowProc no caso padrão.

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

Requisitos

Requisito Valor
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]
Cabeçalho
Winuser.h (inclua Windows.h)

Confira também

Notificações

Guia de Programação de Gestos de Toque do Windows