Обзор сенсорных жестов Windows

В этом разделе описываются различные жесты, поддерживаемые Windows Touch.

Общие сведения о жестах

Windows Touch поддерживает несколько жестов, поддерживающих один и несколько контактов. На следующем рисунке показаны различные жесты, поддерживаемые в Windows 7.

Иллюстрация, показывающая жесты, поддерживаемые Windows Touch в Windows 7

Примечание

Некоторые распознаватели более надежны при интерпретации жестов с несколькими контактами, когда контакты находятся дальше друг от друга.

Поддержка прежних версий

Для поддержки прежних версий обработчик жестов по умолчанию сопоставляет некоторые жесты с сообщениями Windows, которые использовались в предыдущих версиях Windows. В следующей таблице показано, как жесты сопоставляют с устаревшими сообщениями.

Жест Описание Созданные сообщения
Сдвиг Жест сдвига сопоставляется с использованием колесика прокрутки. WM_VSCROLL
WM_HSCROLL
Нажатие и удержание Жест нажатия и удержания сопоставляется с щелчком правой кнопкой мыши. WM_RBUTTONDOWN
WM_RBUTTONUP
Zoom Жест масштабирования активирует сообщения, похожие на удерживание клавиши CTRL и вращающее колесико мыши для прокрутки. WM_MOUSEWHEEL с MK_CONTROL , заданным в wParam

Интерпретация сенсорных жестов Windows

Сенсорные жесты Windows могут интерпретироваться разработчиками приложений, обрабатывая сообщение WM_GESTURE из функции WndProc приложения. После обработки этого сообщения можно получить структуру GESTUREINFO , которая описывает жест. Структура GESTUREINFO будет содержать различные сведения, которые зависят от типа жеста.

Структура 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 имеет встроенную инерцию. В конце жеста сдвига операционная система создает дополнительные сообщения жеста сдвига.

Элементы структуры GESTUREINFOptsLocation и ullArguments указывают точку (с помощью структуры POINTS ) и дополнительные сведения о жестах в зависимости от жеста. В следующей таблице перечислены значения, связанные с каждым типом жестов.

Идентификатор жеста ullArguments ptsLocation
GID_ZOOM Указывает расстояние между двумя точками. Указывает центр масштабирования.
GID_PAN Указывает расстояние между двумя точками. Указывает текущее положение сдвига.
GID_ROTATE Указывает угол поворота, если установлен флаг GF_BEGIN . В противном случае это изменение угла с момента начала поворота. Он подписывается для указания направления поворота. Используйте макросы GID_ROTATE_ANGLE_FROM_ARGUMENT и GID_ROTATE_ANGLE_TO_ARGUMENT , чтобы получить и задать значение угла. Это указывает центр поворота, который является неподвижной точкой, вокруг которой поворачивается целевой объект.
GID_TWOFINGERTAP Указывает расстояние между двумя пальцами. Указывает центр двух пальцев.
GID_PRESSANDTAP Указывает разницу между первым и вторым пальцами. Это значение хранится в структуре POINT в нижних 32 битах элемента ullArguments . Указывает положение, на которое спускается первый палец.

Сенсорные жесты Windows