Win32 API. Работа с клавиатурой
Страница 6. Флажки сообщения о нажатии клавиши


Флажки сообщения о нажатии клавиши

Параметр lParam сообщения нажатия клавиши содержит дополнительную информацию о нажатии клавиши, которая генерировала сообщение. Эта информация включает в себя счет повторений, скэн-код, флажок дополнительной клавиши, код контекста, флажок предыдущего состояния клавиши и флажок переходного состояния. 

Прикладная программа может использовать следующие значения, чтобы управлять флажками нажатия клавиши:

  • KF_ALTDOWN - Управляет флажком клавиши ALT, который указывает, нажата ли клавиша ALT.
  • KF_DLGMODE - Управляет флажком режима диалога, который указывает, является ли диалоговое окно активным.
  • KF_EXTENDED - Управляет флажком дополнительной клавиши.
  • KF_MENUMODE - Управляет флажком режима меню, который указывает, является ли меню активным.
  • KF_REPEAT - Управляет счетчиком повторений.
  • KF_UP - Управляет флажком переходного состояния.

Счетчик повторений

Вы можете проверить счетчик повторений, чтобы определить, представляет ли сообщение нажатия клавиши больше чем одно нажатие. Система увеличивает счетчик, когда клавиатура генерирует сообщения WM_KEYDOWN или WM_SYSKEYDOWN быстрее, чем прикладная программа может обрабатывать их. Это часто происходит тогда, когда пользователь удерживает нажатой клавишу достаточно долго, чтобы запустить функцию автоматического повторения клавиатуры. Вместо заполнения системной очереди сообщениями, происходящими в результате нажатия клавиши, система объединяет сообщения в единственное сообщение нажатой клавиши и увеличивает счет повторений. Отпуск клавиши не может запустить функцию автоматического повторения, так что счет повторений для сообщений WM_KEYUP и WM_SYSKEYUP всегда устанавливается в 1.

Скэн-код

Скэн-код - значение, которое аппаратные средства клавиатуры генерируют, когда пользователь нажимает клавишу. Это - аппаратно-зависимое значение, которое идентифицирует нажатую клавишу, в противоположность символу, представленному клавишей. Прикладная программа обычно игнорирует скэн-коды. Вместо этого, она использует не зависящие от устройства коды виртуальной клавиши, чтобы правильно понять сообщения нажатий клавиши.

Флажок дополнительной клавиши

Флажок дополнительной клавиши указывает, произошло ли сообщение нажатия клавиши от одной из дополнительных клавиш на расширенной клавиатуре. Дополнительные клавиши состоят из клавиш ALT и CTRL в правой части клавиатуры; INS, DEL, HOME, END, PAGE UP, PAGE DOWN и клавиши курсора в группах слева от цифровой клавиатуры; клавиша NUM LOCK; клавиша BREAK (CTRL+PAUSE); клавиша PRINT SCRN; делитель (/) и клавиши ENTER в цифровой клавиатуре. Флажок дополнительной клавиши устанавливается, если клавиша является дополнительной клавишей.

Контекстный Код

Контекстный код указывает, была ли клавиша ALT нажата тогда, когда было сгенерировано сообщение о нажатии клавиши. Если клавиша ALT была нажата, код будет 1 и 0, если этого не было.

Флажок предыдущего состояния клавиши

Флажок предыдущего состояния клавиши указывает, была ли клавиша, которая генерировала сообщение о нажатии, перед этим нажата или отпущена. Он будет 1, если клавиша в предыдущем состоянии была нажата и 0, если клавиша в предыдущем состоянии была отпущена. Вы можете использовать этот флажок, чтобы идентифицировать сообщения нажатия клавиши, сгенерированные автоматической функцией повторения клавиатуры. Этот флажок установлен в 1 для сообщений WM_KEYDOWN и WM_SYSKEYDOWN нажатия клавиши, сгенерированных автоматической функцией повторения. Он всегда устанавливается в 0 для сообщений WM_SYSKEYUP и WM_KEYUP.

Флажок переходного состояния

Флажок переходного состояния указывает, что генерировало сообщение нажатия клавиши - либо нажатие клавиши или отпуск её. Этот флажок всегда устанавливается в 0 для сообщений WM_SYSKEYDOWN и WM_KEYDOWN; он всегда устанавливается в 1 для сообщений WM_SYSKEYUP и WM_KEYUP.

 
« Предыдущая статья   Следующая статья »