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


Временная шкала сообщений мыши и системных событий

При выполнении заданного действия системные события (префиксы с ISG_) отправляются и получаются практически мгновенно приложением. Сообщения мыши (префиксы с WM_) отправляются при выполнении действия и получаются приложением после времени обработки события службой обмена сообщениями Microsoft Windows. Кроме того, CursorDown и CursorUp — это события пера, полученные от оборудования пера. Они отправляются, когда ручка планшета касается экрана и когда она поднимается с экрана соответственно.

События пера и сообщения мыши не синхронизированы. В определенном порядке не гарантируется, что соответствующие сообщения мыши и события пера будут выполняться в определенном порядке. На следующей диаграмме показан ожидаемый, но не всегда предсказуемый, последовательность событий системы и мыши, отправляемых. Обратите внимание на диаграмму, что события мыши задерживаются при обнаружении системных событий жестов.

ожидаемая последовательность событий системы и мыши для ввода пера

Важные рекомендации по реализации

При разработке сообщений мыши и системных событий следует учитывать следующее:

  • События пера и сообщения мыши отправляются в приложение независимо от того, используется ли перо или мышь.
  • Если приложение прослушивает сообщения пера и мыши, трудно предсказать связь сообщений и, следовательно, в конечном итоге. События пера и сообщения мыши не синхронизированы. Нет никаких гарантий, что соответствующие сообщения мыши и события пера (например, WM_LBUTTONDOWN и ISG_TAP, или WM_LBUTTONDBLCLK и ISG_DBLTAP) будут выполняться в определенном порядке. Связь между этими сообщениями сложна.
  • Рекомендуется не смешивать события мыши и пера в одном компоненте приложения. Например, функция приложения, которая реагирует на CursorDown и MouseUp может не вести себя должным образом сейчас или с будущими версиями пакета SDK для планшетного пк.
  • Если пользователь перетаскивает ручку планшета до завершения, события, отправляемые влево. Например, при запуске перетаскивания отправляются ISG_DRAG и WM_LBUTTONDOWN. Когда перо в конечном итоге поднимается, отправляются CursorUp и WM_LBUTTONUP. Событие системного жеста может не запускаться немедленно, так как оно должно определить, какой тип события происходит.
  • Двойной касание с пером планшета часто менее точно, чем дважды щелкните мышью. Это происходит из внутренней природы выполнения двойного касания с планшетным пером. Так как пользователь должен поднять перо планшета для двойного касания, время между касаниями часто больше соответствующего времени между щелчками двойного щелчка. Кроме того, скорее всего, два касания пера планшета происходят на координатах экрана, которые находятся дальше друг от друга, чем для двух щелчков мыши. Для этого windows XP Tablet PC Edition имеет параметры для темпорального и пространственного расстояния между двумя касаниями двойного касания, которые отделены от параметров мыши для двойного щелчка. Эти параметры можно изменить в параметрах планшета и пера на панели управления.

Из-за этих соображений приложения должны прослушивать только один набор сообщений, а не оба. Если вы создаете приложение с поддержкой пера, прослушивайте только системные и перо сообщения. Эти сообщения предсказуемы и хорошо работают с планшетным пером. Если вы создаете приложение, которое не включено пером, прослушиваете только сообщения мыши.