Поделиться через


Структура 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

64-разрядное целое число без знака, содержащее аргументы для жестов, которые помещаются в 8 байт.

cbExtraArgs

Размер (в байтах) дополнительных аргументов, сопровождающих этот жест.

Комментарии

HIDWORD элемента ullArguments всегда равно 0, за следующими исключениями:

  • Для GID_PAN значение равно 0, за исключением случаев, когда имеется инерция. Если задано GF_INERTIA , HIDWORD является вектором инерции (два 16-разрядных значения).
  • Для GID_PRESSANDTAP это расстояние между двумя точками.
Структура GESTUREINFO извлекается путем передачи дескриптора в структуру сведений жестов в функцию GetGestureInfo .

Следующие флаги указывают различные состояния жестов и хранятся в dwFlags.

Имя Значение Описание
GF_BEGIN 0x00000001 Начинается жест.
GF_INERTIA 0x00000002 Жест вызвал инерцию.
GF_END 0x00000004 Жест завершен.
 
Примечание Большинство приложений должны игнорировать GID_BEGIN и GID_END сообщения и передавать их в DefWindowProc. Эти сообщения используются обработчиком жестов по умолчанию. Поведение приложения не определено, когда GID_BEGIN и GID_END сообщения используются сторонним приложением.
 
В следующей таблице указаны различные идентификаторы жестов.
Имя Значение Описание
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