GESTUREINFO 구조체(winuser.h)
제스처에 대한 정보를 저장합니다.
구문
typedef struct tagGESTUREINFO {
UINT cbSize;
DWORD dwFlags;
DWORD dwID;
HWND hwndTarget;
POINTS ptsLocation;
DWORD dwInstanceID;
DWORD dwSequenceID;
ULONGLONG ullArguments;
UINT cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;
멤버
cbSize
구조체의 크기(바이트)입니다. 호출자는 이를 sizeof(GESTUREINFO)
로 설정해야 합니다.
dwFlags
제스처의 상태입니다. 자세한 내용은 참조 주의합니다.
dwID
제스처 명령의 식별자입니다.
hwndTarget
이 제스처의 대상이 되는 창에 대한 핸들입니다.
ptsLocation
제스처와 연결된 좌표를 포함하는 POINTS 구조체입니다. 이러한 좌표는 항상 화면의 원점과 관련되어 있습니다.
dwInstanceID
구조체에 대해 내부적으로 사용되는 식별자입니다.
dwSequenceID
시퀀스에 대해 내부적으로 사용되는 식별자입니다.
ullArguments
8바이트에 맞는 제스처에 대한 인수를 포함하는 64비트 부호 없는 정수입니다.
cbExtraArgs
이 제스처와 함께 제공되는 추가 인수의 크기(바이트)입니다.
설명
ullArguments 멤버의 HIDWORD는 다음 예외를 제외하고 항상 0입니다.
- GID_PAN 관성인 경우를 제외하고 0입니다. GF_INERTIA 설정되면 HIDWORD는 관성 벡터(16비트 값 2개)입니다.
- GID_PRESSANDTAP 경우 두 점 사이의 거리입니다.
다음 플래그는 제스처의 다양한 상태를 나타내며 dwFlags에 저장됩니다.
Name | 값 | 설명 |
---|---|---|
GF_BEGIN | 0x00000001 | 제스처가 시작됩니다. |
GF_INERTIA | 0x00000002 | 제스처가 관성 트리거되었습니다. |
GF_END | 0x00000004 | 제스처가 완료되었습니다. |
참고 대부분의 애플리케이션은 GID_BEGIN 무시하고 메시지를 GID_ENDDefWindowProc에 전달해야 합니다.
이러한 메시지는 기본 제스처 처리기에서 사용됩니다. GID_BEGIN 및 GID_END 메시지가 타사 애플리케이션에서 사용되는 경우 애플리케이션 동작은 정의되지 않습니다.
Name | 값 | Description |
---|---|---|
GID_BEGIN | 1 | 제스처가 시작됩니다. |
GID_END | 2 | 제스처가 종료됩니다. |
GID_ZOOM | 3 | 확대/축소 제스처입니다. |
GID_PAN | 4 | 팬 제스처입니다. |
GID_ROTATE | 5 | 회전 제스처입니다. |
GID_TWOFINGERTAP | 6 | 두 손가락 탭 제스처입니다. |
GID_PRESSANDTAP | 7 | 누른 다음 제스처를 탭합니다. |
참고GID_PAN 제스처에는 기본 제공 관성입니다. 팬 제스처가 끝나면 운영 체제에서 추가 팬 제스처 메시지를 만듭니다.
typedef GESTUREINFO const * PCGESTUREINFO;
예제
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);
}
}
요구 사항
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
머리글 | winuser.h(Windows.h 포함) |