afx_msg void OnSysKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
Параметры
nChar
Определяет код с нажимаемой виртуальной клавиши.
nRepCnt
Определяет повторный счет.
nFlags
Определяет скэн-код, код перехода клавиши, предыдущее состояние клавиши , и контекстный код, как показано в следующем списке:
- 0-7 - Скэн-код (Значение зависит от первоначального изготовителя оборудования). Младший байт старшего слова.
- 8 - Расширенная клавиша типа функциональной клавиши или клавиши на цифровой клавиатуре (1 если это расширенная клавиша, иначе 0).
- 9-10 - Не используется.
- 11-12 - Для внутреннего использования Windows.
- 13 - Контекстный код (1 если клавиша ALT нажата в то время как клавиша нажата, иначе 0).
- 14 - Предыдущее состояние клавиши (1 если клавиша нажата перед обращением, 0 если клавиша отпущена).
- 15 - Состояние Перехода (1 если клавиша отпускается, 0 если клавиша нажимается).
Для обращений OnSysKeyDown бит перехода клавиши (бит 15) - 0. Бит контекстного кода (бит 13) 1 если клавиша ALT нажата в то время как клавиша нажата, 0 если сообщение послано активному окну потому что никакое окно не имеет фокус ввода.
Замечания
Если объект CWnd имеет фокус ввода OnSysKeyDown функция вызывается рамкой когда пользователь удерживает клавишу ALT и затем нажимает другую клавишу. Если никакое окно в настоящее время не имеет фокуса ввода OnSysKeyDown функция активного окна вызвана. Объект CWnd который получает сообщение может различать между этими двумя контекстами проверяя контекстный код в nFlags.
Когда контекстный код - 0, WM_SYSKEYDOWN сообщение полученное OnSysKeyDown может быть передано к функции TranslateAccelerator Windows, которая обработает это, как если бы это было нормальное сообщение клавиши вместо сообщения клавиши системы. Это позволяет акселераторам использоваться с активным окном, даже если активное окно не имеет фокуса ввода.
Из-за авто повторения, больше чем один OnSysKeyDown обращение могут происходить прежде чем WM_SYSKEYUP сообщение получено. Предыдущее состояние клавиши (бит 14) может использоваться чтобы определить, указывает ли обращение OnSysKeyDown первый переход или повторенный переход.
Для IBM расширенных 101 и 102 клавишных клавиатур, расширенные клавиши - правый ALT и CTRL на основном разделе клавиатуры. INS, DEL, HOME, END, PAGE UP, PAGE DOWN и клавиши курсора в кластерах налево от цифровой клавиатуры. Наклонная черта вправо (/) и ENTER в цифровой клавиатуре. Некоторые другие клавиатуры могут поддерживать бит расширяемой клавиши в nFlags.
Эта функция вызвана рамкой чтобы позволить Bашей прикладной программе обрабатывать сообщение Windows. Параметры переданные к Вашей функции отражают параметры полученные рамкой, когда сообщение было получено. Если Вы вызываете реализацию базового класса этой функции, та реализация использует параметры, первоначально переданные с сообщением, а не параметры которые Вы обеспечиваете функции.