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