Шаг 289 - CWnd::OnSysKeyDown

afx_msg void OnSysKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );

Параметры
nChar
Определяет код с нажимаемой виртуальной клавиши.
nRepCnt
Определяет повторный счет.
nFlags
Определяет скэн-код, код перехода клавиши, предыдущее состояние клавиши , и контекстный код, как показано в следующем списке:

Для обращений 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. Параметры переданные к Вашей функции отражают параметры полученные рамкой, когда сообщение было получено. Если Вы вызываете реализацию базового класса этой функции, та реализация использует параметры, первоначально переданные с сообщением, а не параметры которые Вы обеспечиваете функции.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 02.01.2002