Поделиться через


сообщение WM_SYSKEYUP

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

Окно получает это сообщение через функцию WindowProc .

#define WM_SYSKEYUP                     0x0105

Параметры

wParam

Код виртуального ключа освобождаемого ключа. См . раздел Коды виртуальных ключей.

lParam

Число повторов, код сканирования, флаг расширенного ключа, код контекста, предыдущий флаг "ключ—состояние" и флаг состояния перехода, как показано в следующей таблице.

Bits Значение
0—15 Число повторов для текущего сообщения. Значение — это количество автоматических попыток нажатия клавиши в результате того, что пользователь удерживает клавишу. Число повторов всегда равно 1 для WM_SYSKEYUP сообщения.
16—23 Код сканирования. Значение зависит от изготовителя оборудования.
24 Указывает, является ли клавиша расширенной, например клавишами ALT и CTRL справа, которые отображаются на клавиатуре с расширенными 101- или 102-клавишными клавишами. Значение равно 1, если это расширенный ключ; в противном случае значение равно нулю.
25-28 Защищены; не использовать.
29 Код контекста. Значение равно 1, если клавиша ALT не работает во время ее освобождения; Значение равно нулю, если WM_SYSKEYUP сообщение будет отправлено в активное окно, так как ни в окне нет фокуса клавиатуры.
30 Предыдущее состояние ключа. Значение всегда равно 1 для WM_SYSKEYUP сообщения.
31 Состояние перехода. Значение всегда равно 1 для WM_SYSKEYUP сообщения.

Дополнительные сведения см. в разделе Флаги сообщения нажатия клавиш.

Возвращаемое значение

Приложение должно возвращать ноль, если оно обрабатывает это сообщение.

Комментарии

Функция DefWindowProc отправляет WM_SYSCOMMAND сообщение в окно верхнего уровня, если клавиша F10 или клавиша ALT была освобождена. Параметр wParam сообщения имеет значение SC_KEYMENU.

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

Для расширенных 101- и 102-клавишных клавиатур расширенные клавиши — это правые клавиши ALT и CTRL в main разделе клавиатуры; клавиши INS, DEL, HOME, END, PAGE UP, PAGE DOWN и клавиши со стрелками в кластерах слева от цифровой клавиатуры; а также клавиши деления (/) и ВВОД на цифровой клавиатуре. Другие клавиатуры могут поддерживать бит расширенной клавиши в параметре lParam .

Для не-США улучшенная клавиатура с 102 клавишами, правая клавиша ALT обрабатывается как клавиши CTRL+ALT. В следующей таблице показана последовательность сообщений, которые возникают, когда пользователь нажимает и отпускает эту клавишу.

Сообщение Код виртуального ключа
WM_KEYDOWN VK_CONTROL
WM_KEYDOWN VK_MENU
WM_KEYUP VK_CONTROL
WM_SYSKEYUP VK_MENU

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Winuser.h (включая Windows.h)

См. также раздел