Флаги
Младшие 16 бит параметра mp1 сообщения WM_CHAR содержат флаги, отражающие состояние клавиш в момент генерации сообщения.
Для извлечения флагов из параметра mp1 удобно использовать макрокоманду SHORT1FROMMP :
nFs = SHORT1FROMMP (mp1);
Список отдельных флагов вместе с маской для проверки и кратким описанием мы привели ниже:
Флаг | Маска | Описание |
KC_CHAR | 0x0001 | Поле кода символа содержит правильное значение |
KC_VIRTUALKEY | 0x0002 | Поле виртуального кода клавиши содержит правильное значение |
KC_SCANCODE | 0x0004 | Поле аппаратного скан-кода клавиши содержит правильное значение |
KC_SHIFT | 0x0008 | Была нажата клавиша <Shift> |
KC_CTRL | 0x0010 | Была нажата клавиша <Control> |
KC_ALT | 0x0020 | Была нажата клавиша <Alt> |
KC_KEYUP | 0x0040 | Сообщение было создано, когда пользователь отпустил нажатую ранее клавишу |
KC_PREVDOWN | 0x0080 | Ранее эта клавиша находилась в нажатом состоянии (устанавливается при выполнении функции автоповтора для клавиши, которую держат в нажатом состоянии достаточно долгое время) |
KC_LONEKEY | 0x0100 | Во время ввода комбинации клавиш отпущена та клавиша, которая была перед этим нажата |
KC_DEADKEY | 0x0200 | Нажата клавиша для создания диактрических символов ("мертвая" клавиша) |
KC_COMPOSITE | 0x0400 | Композитная клавиша, составленная с использованием диактрических символов |
KC_INVALIDCOMP | 0x0800 | Неправильная композитная клавиша |
KC_TOGGLE | 0x1000 | С помощью этого флага можно использвать любую клавишу как переключающую |
KC_INVALIDCHAR | 0x2000 | Неправильный код клавиши |
KC_DBCSRSRVD1 | 0x4000 | Зарезервировано для двухсимвольных кодов клавиш |
KC_DBCSRSRVD2 | 0x8000 | Аналогично предыдущему |