Временная шкала сообщений мыши и системных событий
При выполнении определенного действия системные события (с префиксом 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 есть параметры темпорального и пространственного расстояния между двумя касаниями двойного касания, которые отделены от параметров мыши для двойного щелчка. Эти параметры можно настроить в разделе Параметры планшета и пера в панель управления.
Из-за этих соображений приложения должны прослушивать только один набор сообщений, а не оба. Если вы создаете приложение с поддержкой пера, прослушивайте только системные сообщения и сообщения пера. Эти сообщения являются предсказуемыми и хорошо работают с ручкой планшета. Если вы создаете приложение, которое не поддерживает перо, прослушивайте только сообщения мыши.