Выбор правильного подхода к Windows Touch
В этом разделе описаны различные подходы к Windows Touch, которые можно использовать.
Вы можете улучшить приложения с помощью функций Windows Touch различными способами. Прежде чем выбрать метод, вы должны подумать, что вы хотите сделать с вашим приложением. Следующие сценарии типичны для Windows Touch:
- Вы хотите, чтобы приложение работало так же, как в устаревших версиях Windows, но хотите, чтобы сообщения Windows Touch работали согласованно.
- Вам нужна поддержка поворота пользовательского объекта, преобразования, сдвига или увеличения масштаба в приложении.
- Вы хотите, чтобы приложение могло точно интерпретировать жесты Windows Touch или интерпретировать несколько касаний приложения, оптимизированного специально для ввода Windows Touch.
- У вас есть приложение, которое использует объект RealTimeStylus и хотите улучшить его с помощью возможностей Windows Touch.
Вы хотите, чтобы ваше приложение работало так же, как и в устаревших версиях Windows
В Windows 7 приложения по умолчанию создают сообщения, которые обеспечивают функциональные возможности Windows Touch. Например, жесты сдвига активируют WM_*SCROLL-сообщения. Помимо поддержки сдвига, обработчик WM_GESTURE по умолчанию в Windows 7 поддерживает ограничивающую обратную связь, увеличение, а также жесты нажатия и касания. Обратная связь по границам также активирована через поддержку старых версий. Дополнительные сведения о том, как жесты сопоставляются с сообщениями, см. в обзоре жестов Windows . Разработчикам, которым нужна только эта базовая функциональность, не требуется напрямую работать с API Windows Touch.
Заметка
Пользовательские обработчики полос прокрутки должны поддерживать запрос SM_THUMBPOSITION для сообщений WM_VSCROLL и должны поддерживать запросы SB_LINELEFT и SB_LINERIGHT для сообщений WM_HSCROLL.
- В разделе Поддержка устаревшего режима прокрутки с помощью полос прокрутки объясняется, как обеспечить поведение приложения так, как ожидают пользователи в Windows 7.
Требуется поддержка поворота настраиваемых объектов, перемещения, сдвига или масштабирования
Если требуется ограниченная поддержка сенсорного ввода, но поведение по умолчанию, которое предлагает Windows 7, недостаточно для приложения, можно использовать жесты для улучшения приложения. С помощью жестов можно интерпретировать команды жестов, обрабатывая WM_GESTURE сообщение. Дополнительные сведения о жестах см. в разделе жестов Windows Touch. Если вашему приложению нужна поддержка лишь для поворотов с высокой точностью, улучшенное масштабирование или панорамирование одним пальцем, использование жестов лучше всего подходит для разработки Windows Touch. Помимо интерпретации сообщения жеста, вы можете выбрать поддержку обратной связи границ. Дополнительные сведения об обратной связи по границам см. в разделе обратной связи по границамсправочника по программированию Windows Touch. В Windows 7 командная строка и Internet Explorer используют граничную обратную связь и жесты.
- В разделе Улучшение опыта использования прокрутки одним пальцем объясняется, как настроить опыт прокрутки путем обработки сообщения WM_GESTURE.
Вы хотите точное интерпретацию жестов или настраиваемую обработку нескольких точек касания
Если вы хотите иметь еще более конкретный контроль над жестами, чем предлагается сообщением WM_GESTURE, или вы хотите интерпретировать несколько жестов на нескольких объектах, следует использовать обработчик манипуляций. Обработчик манипуляций, по сути, является супермножеством жестов. Для использования обработчика манипуляций требуется реализовать приемник событий для манипуляций, в который вы передаете сырые данные сенсорного ввода.
Если требуется простая физика объектов в дополнение к интерпретации жестов, следует использовать обработчик инерции в сочетании с обработчиком манипуляций. Обработчик инерции работает с обработчиком манипуляций, принимая значения скорости от обработчика манипуляций при завершении манипуляции.
Если вы хотите интерпретировать несколько точек касания в приложении, необходимо создать обработчик сообщений для сообщения WM_TOUCH.
- В разделе Windows Touch Input объясняется, как интерпретировать сообщение WM_TOUCH.
- В разделе Обнаружение и отслеживание нескольких точек касания показано, как создать простое приложение, которое интерпретирует несколько входных данных.
- В разделе манипуляций и инерции объясняется, как обеспечить наиболее гибкий подход к Windows Touch.
Важный
Windows 11 и более поздние версии
Некоторые взаимодействия с использованием трех и четырех пальцев больше не будут работать в приложениях Windows по умолчанию.
По умолчанию взаимодействие касания с тремя и четырьмя пальцами теперь используется системой для операций, таких как переключение или минимизация окон и изменение виртуальных рабочих столов. Так как эти взаимодействия теперь обрабатываются на уровне системы, функциональные возможности вашего приложения могут повлиять на это изменение.
Для поддержки взаимодействия с тремя или четырьмя пальцами в приложении появился новый параметр пользователя, указывающий, обрабатывает ли система эти взаимодействия:
устройствах Bluetooth & > "Касание" > "Жесты касания с тремя и четырьмя пальцами"
Если задано значение "Вкл." (по умолчанию), система будет обрабатывать все взаимодействия с тремя и четырьмя пальцами (приложения не смогут поддерживать их).
Если задано значение Off, взаимодействие с тремя и четырьмя пальцами может поддерживаться приложениями (они не будут обрабатываться системой).
Если приложение должно поддерживать эти взаимодействия, рекомендуется сообщить пользователям об этом параметре и предоставить ссылку, которая запускает приложение "Параметры" на соответствующую страницу (ms-settings:devices-touch). Дополнительные сведения: см. метод Launcher.LaunchUriAsync.
Вы хотите включить функцию Windows Touch в приложение, использующее RealTimeStylus
Если вы хотите включить поддержку многократного касания на платформе Tablet PC, необходимо реализовать пользовательский плагин RealTimeStylus, который интерпретирует данные Windows Touch. Корпорация Майкрософт представила интерфейсы ITablet3 и IRealTimeStylus3 для поддержки ввода данных от нескольких контактов в подключаемом модуле RealTimeStylus. Эти интерфейсы упрощают расширение подключаемых модулей RealTimeStylus для поддержки нескольких точек контакта.
Чтобы проверить, включена ли поддержка нескольких контактов, вызовите IsMultiTouch. Чтобы проверить количество поддерживаемых контактов, вызовите GetMaximumCursors. Чтобы включить или отключить поддержку нескольких контактов, вызовите MultiTouchEnabled.
Заметка
Если вы не включите несколько точек контакта в RealTimeStylus, вы получите жесты, такие как перемещение и масштабирование.