Игнорирование событий клавиатуры
Обработка сообщений клавиатуры, мыши, таймера
При создании приложений рекомендуется реализовать все функциональные возможности программы не только с помощью мыши, но и с помощью клавиатуры.
Синхронизация событий клавиатуры
Приложение узнает о нажатиях клавиш посредством сообщений, которые посылаются оконной процедуре.Когда пользователь нажимает и отпускает клавиши,
- Драйвер клавиатуры передает информацию о нажатии клавишв Windows.
- Windows сохраняет эту информацию (в виде сообщений) в системной очереди сообщений.
- Затем она передает сообщения клавиатуры, по одному за раз, в очередь сообщений программы, содержащей окно, имеющее фокус ввода (input focus).
- Затем программа отправляет сообщения соответствующей оконной процедуре(с помощью функцииDispatchMessage).
Смысл этого двухступенчатого процесса – сохранение сообщений в системной очереди сообщений и дальнейшая их передача в очередь сообщений приложения – в синхронизации.
- Если пользователь печатает на клавиатуре быстрее, чем программа может обрабатывать поступающую информацию, Windows сохраняет информацию о дополнительных нажатиях клавиш в системной очереди сообщений, поскольку одно из дополнительных нажатий может быть переключением фокуса ввода на другую программу. Информацию о последующих нажатиях следует затем направлять в другую программу. Таким образом, Windows корректно синхронизирует такие события клавиатуры.
Для отражения различных событий клавиатуры Windows посылает программам восемь различных сообщений. Программы вполне могут игнорировать многие из них; кроме того, в большинстве случаев, в этих сообщениях от клавиатуры содержится значительно больше закодированной информации, чем нужно приложению.
Замечание.Залог успешной работы с клавиатурой – это знание того, какие сообщения важны для приложения, а какие нет.
Игнорирование событий клавиатуры
Хотя клавиатура является основным источником пользовательского ввода программ для Windows,
- Приложению не обязательно реагировать на каждое получаемое от клавиатуры сообщение - Windows сама обрабатывает многие сообщения клавиатуры.
Приложению не нужно отслеживать нажатия клавиш, поскольку Windows извещает программу об эффекте, вызванном их нажатием. Например,
- Когда пользователь выбирает пункт меню, Windows посылает программе сообщение, что выбран пункт меню, независимо от того, был ли он выбран с помощью мыши или клавиатуры.
- В программах для Windows часто используются быстрые клавиши (keyboard accelerators) для быстрого доступа к часто употребляемым пунктам меню (в качестве быстрых клавиш обычно используют функциональные клавиши или различные комбинации клавиш, такие быстрые клавиши определяются в описании ресурсов программы). Windows сама преобразует быстрые клавиши в командные сообщения меню, приложению не нужно этого делать явно.
- Окна диалога также имеют интерфейс клавиатуры, но обычно программам не нужно отслеживать клавиатурные события, когда активно окно диалога. Интерфейс клавиатуры обслуживается самой Windows, и Windows посылает сообщения программе о действиях, соответствующих нажимаемым клавишам.
- В окнах диалога и внутри окон верхнего уровня могут содержаться окна редактирования (edit) для ввода текста (это окна, в которых пользователь набирает строки символов). Windows управляет всей логикой окон редактирования и дает программе окончательное содержимое этих окон, после того, как пользователь завершит ввод текста.
Дата добавления: 2017-01-26; просмотров: 1053;