Win32 API. Функции и сообщения ввода информации с клавиатуры
Страница 45. Сообщение WM_SYSKEYUP


Сообщение WM_SYSKEYUP

Сообщение WM_SYSKEYUP посылается окну с фокусом клавиатуры тогда, когда пользователь отпускает клавишу, которая была нажата, в то время когда удерживалась нажатой клавиша ALT. Это происходит также тогда, когда никакое окно в настоящее время не имеет фокуса клавиатуры; в этом случае, сообщение WM_SYSKEYUP отправляется активному окну. Окно, которое принимает сообщение, может делать различие между этими двумя ситуациями, проверяя контекстный код в параметре lKeyData.

Синтаксис

WM_SYSKEYUP
nVirtKey = (int) wParam;// код виртуальной клавиши
lKeyData = lParam;// данные на клавишу

Параметры
nVirtKey
Значение wParam. Определяет код виртуальной клавиши, которая была отпущена.
lKeyData
Значение lParam. Определяет счет повторений, скэн-код, флажок дополнительной клавиши, контекстный код, флажок предыдущего состояния клавиши и флажок переходного состояния, как показано в следующем списке:

  • 0-15 - Определяет счет повторений. Значение равно числу повторений нажатия клавиши в результате того, что пользователь удерживает клавишу нажатой. Для сообщения WM_SYSKEYUP счет повторений всегда равен единице.
  • 16-23 - Определяет скэн-код. Значение зависит от фирмы - изготовителя комплектного оборудования (OEM).
  • 24 - Определяет, является ли клавиша дополнительной клавишей, типа правосторонних клавиш ALT и CTRL, которые применяются на усовершенствованных 101- или 102-клавишных клавиатурах. Значение равно 1, если это дополнительная клавиша; иначе, оно равно 0.
  • 25-28 - Зарезервировано; не используется.
  • 29 - Определяет контекстный код. Значение равно 1, если клавиша ALT нажимается, в то время как символьная клавиша отпускается; оно равно 0, если сообщение WM_SYSKEYDOWN посылается активному окну, потому что никакое окно не имеет фокуса клавиатуры.
  • 30 - Определяет предыдущее состояние клавиши. Для сообщения WM_SYSKEYUP это значение всегда 1.
  • 31 - Определяет переходное состояние. Для сообщения WM_SYSKEYUP это значение всегда 1.

Возвращаемые значения
Прикладная программа должна возвратить нуль, если она обрабатывает это сообщение.

Действие по умолчанию
Если клавиша F10 или ALT была отпущена, функция DefWindowProc отправляет сообщение WM_SYSCOMMAND окну верхнего уровня. Параметр wParam сообщения устанавливается в SC_KEYMENU.

Замечания
Когда контекстный код нулевой, сообщение может быть послано в функцию TranslateAccelerator, которая обработает его, как если бы оно было нормальное клавишное сообщение вместо системного сообщения символьной клавиши. Это позволяет клавишам - ускорителям быть использованными с активным окном, даже если активное окно не имеет фокуса клавиатуры.
Для усовершенствованных 101- и 102-клавишных клавиатур, дополнительными клавишами являются - правая ALT и правая CTRL в основной части клавиатуры; INS, DEL, HOME, END, PAGE UP, PAGE DOWN и клавиши курсора в группах слева от цифровой клавиатуры; делитель (/) и клавиши ENTER в цифровой клавиатуре. Другие клавиатуры могут поддерживать бит дополнительной клавиши в параметре lKeyData.
Для не американских усовершенствованных 102-клавишных клавиатур, правая клавиша ALT обрабатывается как клавиша CTRL + ALT. Следующая таблица показывает последовательность сообщений, которые появляются в результате того, когда пользователь нажимает и отпускает эту клавишу:

СообщениеКод виртуальной клавиши
WM_KEYDOWNVK_CONTROL
WM_KEYDOWNVK_MENU
WM_KEYUPVK_CONTROL
WM_SYSKEYUPVK_MENU

Смотри также: DefWindowProc, TranslateAccelerator, WM_SYSCOMMAND, WM_SYSKEYDOWN

Размещение и совместимость WM_SYSKEYUP

Windows NTДа 
Win95Да
Win32sДа
Импортируемая библиотека-
Заголовочный файлwinuser.h
UnicodeНет
Замечания по платформеНе имеется
 
« Предыдущая статья   Следующая статья »