Системные события и сообщения мыши
Приложение включает оптимальный дизайн и использование планшетного пера, отправляя сообщения мыши Microsoft Windows и системные события. Приложения получают оба набора событий для каждого перемещения пера или действия. Затем приложение выбирает соответствующее событие для использования в зависимости от контекста действия. Сообщения мыши Windows хорошо работают для указания и выбора действий, и их следует использовать для действий, связанных с взаимодействием с элементами пользовательского интерфейса .. События пера хорошо работают для приложения рукописного ввода в режиме реального времени, действий пера и рукописного ввода.
Примечание.
События пера и сообщения мыши отправляются в приложение независимо от того, используется ли перо или мышь.
Различие ввода пера от мыши и сенсорного ввода
Когда приложение получает сообщение мыши (например, WM_LBUTTONDOWN), оно может вызвать функцию GetMessageExtraInfo , чтобы определить, возникло ли сообщение из пера или устройства мыши.
Значение, возвращаемое из GetMessageExtraInfo, должно быть проверка маской для 0xFFFFFF00, а затем по сравнению с 0xFF515700. Следующие определения могут сделать это более понятным:
#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE
Если сравнение равно true, то это сообщение мыши было создано пером планшетного пк или сенсорным экраном. Во всех остальных случаях можно предположить, что это сообщение было создано устройством мыши.
Ниже 8 битов, возвращаемых из GetMessageExtraInfo , являются переменными. Из этих битов 7 (ниже 7, маскированных 0x7F) используются для представления идентификатора курсора, ноля для мыши или переменной для идентификатора пера. Кроме того, в Windows Vista восьмой бит, маскированные 0x80, используется для отличия сенсорного ввода от ввода пера (0 = перо, 1 = сенсорный).
Дополнительные сведения см. в разделе "Ввод устройства указателя" и "Сенсорный ввод ".
Поддерживаемые системные жесты
В следующей таблице перечислены системные жесты, включенные в Windows XP Tablet PC Edition, сведения о соответствующих действиях пера и системных событиях, а также о том, как они связаны с традиционными действиями мыши.
Жест пера | Действие мыши | Описание жеста пера | Сообщения о событиях | Сообщения мыши | Поведение в приложениях под управлением Windows |
---|---|---|---|---|---|
Тематический поиск |
Щелчок левой кнопкой |
Коснитесь экрана один раз с пером. |
ISG_TAP отправляется при снятии пера. |
WM_LBUTTONDOWN и WM_LBUTTONUP отправлены при снятии пера. |
Выберите команду из меню или панели инструментов, выполните действия, если выбрана команда, установите точку вставки (IP), показать отзыв о выборе. |
Двойной касание |
Дважды щелкните |
Дважды коснитесь экрана в быстром последовательности. |
ISG_DOUBLETAP отправлено во втором касании (вниз). ISG_TAP событие, отправленное на первом касании. |
WM_LBUTTONDBLCLK отправлено во втором касании (вниз). WM_LBUTTONDOWN и WM_LBUTTONUP, отправленные при первом нажатии (вверх), как для одного касания. |
Выберите слово, откройте файл или папку. |
Нажмите и удерживайте |
Щелкните правой кнопкой мыши |
Коснитесь экрана и удерживайте, пока не появится значок мыши, а затем поднимите перо, чтобы отобразить контекстное меню. Приложение может выбрать действие, отличное от отображения меню правой кнопкой мыши при снятии пера. |
ISG_HOLDENTER отправляется, когда перо было достаточно длинным. ISG_RIGHTTAP отправляется при снятии пера и нажатии правой кнопкой мыши. |
WM_RBUTTONDOWN и WM_RBUTTONUP, отправленные при нажатии правой кнопкой мыши (при снятии пера). |
Показать контекстное меню. |
Удержание |
Щелчок левой кнопкой |
Коснитесь экрана и удерживайте его, пока не появится значок мыши и не исчезнет. Пользователи, скорее всего, делают это, когда они случайно нажимают и удерживают и хотят отменить изменения просто коснитесь. |
ISG_TAP отправляется при снятии пера. |
WM_LBUTTONDOWN и WM_LBUTTONUP отправляется при снятии пера. |
Щелкните левой кнопкой мыши долгое время. Нет эквивалента мыши. Это резервный вариант, когда пользователь выполняет нажатие и удержание в течение длительного времени. Событие отменить изменения, чтобы быть касанием. |
Перетаскивание |
Перетаскивание влево |
Коснитесь экрана, чтобы выбрать объект, который нужно переместить, а затем перетащите после выбора объекта. |
ISG_DRAG отправляется при запуске перетаскивания. |
WM_LBUTTONDOWN отправляется при запуске перетаскивания, за которым следует ряд сообщений перемещения мыши и событие WM_LBUTTONUP. |
Перетаскивание, как в Microsoft Word при запуске с IP-адреса; выберите несколько слов; перетащите объект, как при перетаскивании объекта в Windows; Прокрутки. |
Нажмите и удерживайте, а затем перетащите |
Перетаскивание вправо |
Коснитесь экрана, чтобы выбрать объект, который нужно переместить. Удерживайте, пока не появится значок мыши, а затем перетащите его, чтобы переместить объект. Поднимите перо, чтобы отобразить контекстное меню. |
ISG_HOLDENTER отправлено, когда перо было отложено в течение некоторого времени. ISG_RIGHTDRAG отправляется при запуске перетаскивания. |
WM_RBUTTONDOWN отправляется при запуске перетаскивания, а затем ряд сообщений перемещения мыши, за которым следует событие WM_RBUTTONUP. |
Перетащите, как при перетаскивании объекта или выделения, за которым следует контекстное меню. |
Указатель мыши |
Указатель мыши |
Удерживайте перо устойчиво на небольшом расстоянии от экрана. |
ISG_HOVERENTER событие, отправленное первоначально. По завершении интервала наведения указателя мыши ISG_HOVERLEAVEis отправлено. |
Не эквивалентно сообщению мыши. |
Отображение всплывающих подсказок, эффектов отката и других действий наведения указателя мыши. |
В воздухе встряхнуть |
Отображение панели ввода планшетного компьютера. Нет эквивалента мыши. |
Быстро переместите перо с стороны на сторону, удерживая чаевые выше, но в пределах диапазона экрана. |
Событие не передается приложению. |
Не эквивалентно сообщению мыши. |
Новый, характерный для планшетного компьютера. |
Указание пера и сенсорного взаимодействия
По умолчанию окно получит все системные события жестов и использует модель взаимодействия по умолчанию. Некоторые части этой модели могут препятствовать приложению, поэтому вы можете отключить их выборочно, отвечая на WM_TABLET_QUERYSYSTEMGESTURESTATUS сообщение в WndProc.