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 경우 두 점 사이의 거리입니다.
GESTUREINFO 구조체는 핸들을 제스처 정보 구조체에 GetGestureInfo 함수에 전달하여 검색됩니다.

다음 플래그는 제스처의 다양한 상태를 나타내며 dwFlags에 저장됩니다.

Name 설명
GF_BEGIN 0x00000001 제스처가 시작됩니다.
GF_INERTIA 0x00000002 제스처가 관성 트리거되었습니다.
GF_END 0x00000004 제스처가 완료되었습니다.
 
참고 대부분의 애플리케이션은 GID_BEGIN 무시하고 메시지를 GID_ENDDefWindowProc에 전달해야 합니다. 이러한 메시지는 기본 제스처 처리기에서 사용됩니다. GID_BEGINGID_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 제스처에는 기본 제공 관성입니다. 팬 제스처가 끝나면 운영 체제에서 추가 팬 제스처 메시지를 만듭니다.
 
다음 형식은 GESTUREINFO 구조체에 대한 상수 포인터를 나타내기 위해 정의됩니다.

    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 포함)

참고 항목

GetGestureInfo

구조체

WM_GESTURE