Сообщение WM_SYSKEYDOWN посылается окну с фокусом клавиатуры тогда, когда пользователь нажимает клавишу F10 (которая активизирует строку меню) или удерживая нажатой клавишу ALT, затем нажимает другую клавишу. Это происходит также тогда, когда никакое окно в настоящее время не имеет фокуса клавиатуры; в этом случае сообщение WM_SYSKEYDOWN посылается активному окну. Окно, которое принимает сообщение, может различать между этими двумя ситуациями, проверяя контекстный код в параметре lParam.
Синтаксис
WM_SYSKEYDOWN WPARAM wParam LPARAM lParam; |
Параметры
wParam
Определяет виртуальной код нажимаемой клавиши.lParam
Определяет счет повторений, скэн-код, флажок дополнительной клавиши, контекстный код, флажок предыдущего состояния клавиши и флажок переходного состояния, как показано в следующей таблице:
Значение |
Описание |
0-15 | Определяет счет повторений текущего сообщения. Значение равно числу автоповтора нажатий клавиши в результате того, что пользователь удерживает клавишу нажатой. Если нажатие клавиши удерживается достаточно долго, отправляются многочисленные сообщения . Однако, счет повторений не накапливается. |
16-23 |
Определяет скэн-код. Значение зависит от фирмы - изготовителя комплектного оборудования (OEM). |
24 |
Определяет, является ли клавиша дополнительной клавишей, типа правосторонних клавиш ALT и CTRL, которые появляются на усовершенствованной 101- или 102-клавишной клавиатуре. Значение равно 1, если это дополнительная клавиша; иначе, оно равно 0. |
25-28 |
Зарезервировано; не используется. |
29 |
Определяет контекстный код. Значение является 1, если клавиша ALT является нажатой, в то время, когда нажимается символьная клавиша; оно является 0, если сообщение WM_SYSKEYDOWN посылается активному окну, потому что никакое окно не имеет фокуса клавиатуры. |
30 |
Определяет предыдущее состояние клавиши. Значение является 1, если клавиша нажимается перед оправкой сообщения, или оно равно 0, если клавиша не нажимается. |
31 |
Определяет переходное состояние. Для сообщения WM_SYSKEYDOWN это значение всегда 0. |
Возвращаемые значения
Прикладная программа должна возвратить нуль, если она обрабатывает это сообщение.
Замечания
Функция DefWindowProc проверяет данную клавишу и генерирует сообщение WM_SYSCOMMAND, если клавиша является или TAB или ENTER.
Когда контекстный код нулевой, сообщение может быть передано в функцию TranslateAccelerator, которая обработает его, как если бы это было нормальное клавишное сообщение вместо системного сообщения символьной клавиши. Это позволяет клавишам - ускорителям быть использованными с активным окном, даже если активное окно не имеет фокуса клавиатуры.
Из-за функции автоповтора, до посылки сообщения WM_SYSKEYUP может быть отправлено больше чем одно сообщение WM_SYSKEYDOWN. Предыдущее состояние клавиши (бит 30) может быть использовано, чтобы установить, указывает ли сообщение WM_SYSKEYDOWN переход к первому нажатию или переход к повторному нажатию.
Для усовершенствованных 101- и 102-клавишных клавиатур, дополнительными клавишами являются правая ALT и правая CTRL в основной части клавиатуры; INS, DEL, HOME, END, PAGE UP, PAGE DOWN и клавиши курсора в группах слева от цифровой клавиатуры; делитель (/) и клавиши ENTER в цифровой клавиатуре. Некоторые другие клавиатуры могут поддерживать бит дополнительной клавиши в параметре lParam.
Это сообщение также отправляется всякий раз, когда пользователь нажимает клавишу F10 без клавиши ALT.
Размещение и совместимость WM_SYSKEYDOWN |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Нет |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |