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