Обзор сенсорных жестов Windows
В этом разделе описываются различные жесты, поддерживаемые Windows Touch.
Общие сведения о жестах
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 . | Указывает положение, на которое спускается первый палец. |