Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-ТРПС.doc
Скачиваний:
13
Добавлен:
15.11.2018
Размер:
810.5 Кб
Скачать

7.6.3.1. Системные аппаратные сообщения

WM_SYSKEYDOWN и WM_SYSKEYUP – системные аппаратные сообщения более важны для Windows, чем для приложений. Эти сообщения генерируются при нажатии клавиш в сочетании с клавишей <Alt>. Они вызывают опции меню программы или системного меню, или используются для системных функций, таких как смена активного приложения по <Alt+Tab>.

Программы обычно игнорируют системные аппаратные сообщения и передают их в функцию DefWindowProc(). Оконная процедура в конце концов получает другие сообщения, являющиеся результатом этих аппаратных сообщений клавиатуры, например, выбор меню.

Если приложение проводит обработку системных аппаратных сообщений, после этого обязательно передавайте их в DefWindowProc(), чтобы Windows могла использовать эти сообщения в своих целях. Если этого не сделать, то происходит полная блокировка всех операций с клавишей <Alt>.

7.6.3.2. Несистемные аппаратные сообщения

Для клавиш, которые нажимаются и отпускаются без участия клавиши <Alt>, генерируются несистемные сообщения WM_KEYDOWN и WM_KEYUP. Приложение может использовать или не использовать эти сообщения клавиатуры. Это не влияет на работу операционной системы, поскольку Windows их полностью игнорирует.

7.6.3.3. Битовые поля параметра lParam

Для всех – системных и несистемных – аппаратных сообщений клавиатуры 32-х разрядная переменная lParam, передаваемая в оконную процедуру, состоит из следующих полей:

Биты

Значение

00-15

счетчик повторений (repeat count); равен числу нажатий клавиши. В большинстве случаев 1. Однако, если клавиша остается нажатой, а оконная процедура недостаточно быстра, чтобы обрабатывать эти сообщения в темпе автоповтора, то Windows объединяет несколько аппаратных сообщений о нажатии клавиши в одно сообщение и соответственно увеличивает счетчик повторений. При отпускании клавиши счетчик всегда 1.

16-23

скан-код OEM (Original Equipment Manufacturer scan code); код клавиатуры, генерируемым аппаратурой компьютера. Приложения Windows обычно игнорируют скан-код ОЕМ.

24

флаг расширенной клавиатуры (extended key flag); устанавливается в 1, если сообщение клавиатуры появилось при работе с дополнительными клавишами расширенной клавиатуры IBM. Расширенная клавиатура имеет функциональные клавиши сверху и отдельную комбинированную область клавиш управления курсором и цифр.

25-28

зарезервировано;

29

код контекста (context code); Устанавливается в 1, если нажата клавиша <Alt>. Этот разряд всегда равен 1 для системных аппаратных сообщений и 0 для несистемных аппаратных сообщений клавиатуры за исключением одного случая: если активное окно минимизировано, оно не имеет фокуса ввода, при этом все нажатия клавиш вырабатывают сообщения WM_SYSKEYDOWN и WM_SYSKEYUP.

30

флаг предыдущего состояния клавиши; 1 если клавиша была нажата перед этим;

31

флаг состояния клавиши (transation state).