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


Обзор жестов сенсорного ввода Windows

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

Обзор жестов

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

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

жесты касания Windows