Обработка сенсорного ввода в приложениях Windows 8

в 4:52, , рубрики: Блог компании Intel, Программирование, разработка, сенсорные экраны

Даже самые серьезные разработчики, пишущие на ассемблере и знающие наизусть все клавиатурные шоткарты, не смогут оспорить то, что все больше устройств и их пользователей поддерживают сенсорный ввод (touch screen), поэтому обработка сенсорных методов взаимодействия в приложениях становится все более важной. Стандартные элементы управления и шаблоны Windows 8 хорошо работают с сенсорным вводом — если вы пользуетесь только ими, вам нет необходимости разбираться в технических подробностях. Если же вы имеете дело с классическими приложениями или хотите разработать собственные элементы управления (например, для игры), то должны знать, как правильно обрабатывать сенсорный ввод.

Приложения, которые работали под управлением Windows 7, продолжат работать со следующими особенностями:

  • Если ваше приложение обрабатывает только события мыши, то события касания будут сведены к ним (не будет только события наведения указателя мыши).
  • Если ваше приложение использует события касания Windows 7 (API-интерфейсы WM_TOUCH/WM_GESTURE), то эти API по-прежнему доступны.

В обоих случаях можно подумать над доработкой приложения с использованием новых API ввода Windows 8, поскольку они помогут обеспечить однородность с другими приложениями и в целом повысить удобство для пользователей.
Если ваше приложение изначально не было предназначено для обработки сенсорного ввода, вам также может потребоваться доработать пользовательский интерфейс, чтобы сделать его более пригодным для сенсорного управления: увеличить размер элементов управления, убрать лишние элементы и т. п.

Разработка для сенсорного управления без сенсорного устройства

Если у вас нет сенсорных устройств, можно опробовать ваше классическое приложение или приложение для Магазина Windows в имитаторе Windows 8, который входит в состав Visual Studio 2012 на платформе Windows 8.
Эта программа находится в папке C:Program Files (x86)Common FilesMicrosoft SharedWindows Simulator11.0Microsoft.Windows.Simulator.exe.
В нем можно запускать любое приложение, как в обычном сеансе работы:

Обработка сенсорного ввода в приложениях Windows 8

Приложения для Магазина Windows 8 также можно запускать напрямую в имитаторе из Visual Studio:

Обработка сенсорного ввода в приложениях Windows 8

Сенсорное взаимодействие в Windows 8

Чтобы ваше приложение было удобным для пользователей, используемые в нем жесты должны совпадать со стандартными жестами в ОС:

Обработка сенсорного ввода в приложениях Windows 8

Принцип ввода указателя

Обработка в приложениях сразу нескольких методов ввода может сильно все усложнить. К счастью, в Windows 8 корпорация Microsoft внедрила объединенный ввод с помощью элемента Pointer (Указатель):

Обработка сенсорного ввода в приложениях Windows 8

Метод ввода Pointer объединяет методы ввода мышью, пером и касаниями и является абстракцией этих методов ввода, что дает возможность обрабатывать все методы, написав код всего один раз.
События указателя — самое простое, с чем вы столкнетесь. Вы можете получить их для любого элемента пользовательского интерфейса Windows 8 XAML, а также для ICoreWindow. Со стороны HTML5 эти элементы доступны, но их имена несколько отличаются. Они имеют префикс MS: MSPointerDown, MSPointerMove, MSPointerUp.

Эквивалентами событий указателя в Win32 являются сообщения WM_POINTERXXX, которые можно получать в функции обратного вызова окна Win32. По умолчанию в приложениях Win32 сообщения WM_POINTERXXX не включают сообщения мыши. Чтобы получать действительно объединенные сообщения указателя, нужно сначала вызвать EnableMouseInPointer(true).

События манипуляции также могут предоставлять информацию о масштабировании, повороте и прокрутке. Кроме того, они предоставляют данные инерции. Их можно настроить с помощью ManipulationMode для переключения инерции. Можно разрешить только определенные виды взаимодействия/добавить ограничения (например, направляющие для преобразования в движение по осям X/Y).

В приложениях для Магазина Windows Windows 8, написанных на HTML5/JavaScript, можно использовать метод WinRT GestureRecognizer для доступа к этим событиям.

Обзор API-интерфейсов Windows 8

Обработка сенсорного ввода в приложениях Windows 8

Если объект, с которым вы работаете, не переключает события жестов, можно отправить события указателя интерфейсу GestureRecognizer. GestureRecognizer переключит выбранные события жестов и манипуляций, а также события перетаскивания и поперечной прокрутки.

InteractionContext в Win32 является эквивалентом GestureRecognizer в API Windows Runtime. Объект Interaction Context переключает INTERACTION_CONTEXT_OUTPUT_CALLBACK, связанный с другими жестами и манипуляциями.

Кроме того, в сенсорное приложение можно встроить интерфейс InkRecognizer. Он позволяет распознавать рукописный ввод в классических приложениях и в приложениях для Магазина Windows 8.
Также можно внедрять события касания из классических приложений с помощью API Touch Injection API.

Полную версию статьи можно прочитать на сайте Intel Developer Zone.

Автор: saul

Источник

Поделиться

* - обязательные к заполнению поля