Страница 44 из 45
Сообщение WM_SYSKEYDOWN Сообщение WM_SYSKEYDOWN посылается окну с фокусом клавиатуры тогда, когда пользователь удерживает нажатой клавишу ALT, а затем нажимает другую клавишу. Это происходит также тогда, когда никакое окно в настоящее время не имеет фокуса клавиатуры; в этом случае сообщение WM_SYSKEYDOWN посылается активному окну. Окно, которое принимает сообщение, может различать между этими двумя ситуациями, проверяя контекстный код в параметре lKeyData. Синтаксис WM_SYSKEYDOWN nVirtKey = (int) wParam;// код виртуальной клавиши lKeyData = lParam;// данные на клавишу Параметры nVirtKey Значение wParam. Определяет виртуальной код нажимаемой клавиши. lKeyData Значение 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 в цифровой клавиатуре. Некоторые другие клавиатуры могут поддерживать бит дополнительной клавиши в параметре lKeyData. Смотри также: DefWindowProc, TranslateAccelerator, WM_SYSCOMMAND, WM_SYSKEYUP Размещение и совместимость WM_SYSKEYDOWN Windows NTДа Win95Да Win32sДа Импортируемая библиотека- Заголовочный файлwinuser.h UnicodeНет Замечания по платформеНе имеется
|