Estrutura GESTUREINFO (winuser.h)
Armazena informações sobre um gesto.
Sintaxe
typedef struct tagGESTUREINFO {
UINT cbSize;
DWORD dwFlags;
DWORD dwID;
HWND hwndTarget;
POINTS ptsLocation;
DWORD dwInstanceID;
DWORD dwSequenceID;
ULONGLONG ullArguments;
UINT cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;
Membros
cbSize
O tamanho da estrutura em bytes. O chamador deve definir isso como sizeof(GESTUREINFO)
.
dwFlags
O estado do gesto. Para obter informações adicionais, consulte Comentários.
dwID
O identificador do comando de gesto.
hwndTarget
Um identificador para a janela que é direcionada por esse gesto.
ptsLocation
Uma estrutura POINTS que contém as coordenadas associadas ao gesto. Essas coordenadas são sempre relativas à origem da tela.
dwInstanceID
Um identificador usado internamente para a estrutura .
dwSequenceID
Um identificador usado internamente para a sequência.
ullArguments
Um inteiro sem sinal de 64 bits que contém os argumentos para gestos que se encaixam em 8 bytes.
cbExtraArgs
O tamanho, em bytes, de argumentos extras que acompanham esse gesto.
Comentários
O HIDWORD do membro ullArguments é sempre 0, com as seguintes exceções:
- Para GID_PAN, é 0, exceto quando há inércia. Quando GF_INERTIA é definido, HIDWORD é um vetor de inércia (dois valores de 16 bits).
- Por GID_PRESSANDTAP, é a distância entre os dois pontos.
Os sinalizadores a seguir indicam os vários estados dos gestos e são armazenados em dwFlags.
Nome | Valor | Descrição |
---|---|---|
GF_BEGIN | 0x00000001 | Um gesto está começando. |
GF_INERTIA | 0x00000002 | Um gesto disparou inércia. |
GF_END | 0x00000004 | Um gesto terminou. |
Nome | Valor | Descrição |
---|---|---|
GID_BEGIN | 1 | Um gesto está começando. |
GID_END | 2 | Um gesto está terminando. |
GID_ZOOM | 3 | O gesto de zoom. |
GID_PAN | 4 | O gesto de panorâmica. |
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. |
typedef GESTUREINFO const * PCGESTUREINFO;
Exemplos
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
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) |