MyTetra Share
Делитесь знаниями!
Работа с клавиатурой
Время создания: 13.11.2017 22:20
Раздел: Знания - Компьютер - Языки программирования - WinAPI
Запись: DuwazSandbox/mytetra/master/base/15106008404624f81txa/text.html на raw.githubusercontent.com

Программа узнает о нажатиях клавиш посредством сообщений, которые посылаются оконной процедуре.

На самом деле все происходит не столь просто:
1) когда пользователь нажимает и отпускает клавиши, драйвер клавиатуры передает информацию о нажатии клавиш в Windows.
2) Windows сохраняет эту информацию (в виде сообщений) в системной очереди сообщений.
3) Затем она передает сообщения клавиатуры, по одному за раз, в очередь сообщений программы, содержащей окно, имеющее "фокус ввода" (input focus).
4) Затем программа отправляет сообщения соответствующей оконной процедуре.

Смысл этого двухступенчатого процесса — сохранение сообщений в системной очереди сообщений, и дальнейшая их передача в очередь сообщений приложения — в синхронизации. Если пользователь печатает на клавиатуре быстрее, чем программа может обрабатывать поступающую информацию, Windows сохраняет информацию о дополнительных нажатиях клавиш в системной очереди сообщений, поскольку одно из этих дополнительных нажатий может быть переключением фокуса ввода на другую программу. Информацию о последующих нажатиях следует затем направлять в другую программу. Таким образом Windows корректно синхронизирует такие сообщения клавиатуры.


 
MyTetra Share v.0.59
Яндекс индекс цитирования