Поделиться через


сообщение WM_UNICHAR

Сообщение WM_UNICHAR может использоваться приложением для отправки входных данных в другие окна. Это сообщение содержит код символа нажатой клавиши. (Проверьте, может ли целевое приложение обрабатывать WM_UNICHAR сообщения, отправив сообщение с параметром wParam, для UNICODE_NOCHAR.)

#define WM_UNICHAR                      0x0109

Параметры

wParam

Код символа ключа.

Если wParamUNICODE_NOCHAR и приложение обрабатывает это сообщение, возвращается значение TRUE. Функция DefWindowProc возвращает ЗНАЧЕНИЕ FALSE (значение по умолчанию).

Если wParam не UNICODE_NOCHAR, возвращается значение FALSE. Юникод DefWindowProc публикует WM_CHAR сообщение с теми же параметрами, а функция ANSI DefWindowProc публикует одно или два сообщения WM_CHAR с соответствующими символами ANSI.

lParam

Число повторов, код сканирования, флаг расширенного ключа, код контекста, предыдущий флаг "ключ—состояние" и флаг состояния перехода, как показано в следующей таблице.

Bits Значение
0—15 Число повторов для текущего сообщения. Значение — это количество автоматических попыток нажатия клавиши в результате того, что пользователь удерживает клавишу. Если нажатие клавиши удерживается достаточно долго, отправляется несколько сообщений. Однако число повторов не является накопительным.
16—23 Код сканирования. Значение зависит от изготовителя оборудования.
24 Указывает, является ли клавиша расширенной, например клавишами ALT и CTRL справа, которые отображаются на клавиатуре с расширенными 101- или 102-клавишными клавишами. Значение равно 1, если это расширенный ключ; в противном случае — 0.
25-28 Защищены; не использовать.
29 Код контекста. Значение равно 1, если клавиша ALT удерживается во время нажатия клавиши; в противном случае значение равно 0.
30 Предыдущее состояние ключа. Значение равно 1, если ключ не работает перед отправкой сообщения, или 0, если ключ находится в состоянии вверх.
31 Состояние перехода. Значение равно 1, если клавиша отпускается, или 0 при нажатии клавиши.

Дополнительные сведения см. в разделе Флаги сообщения нажатия клавиш.

Возвращаемое значение

Приложение должно возвращать ноль, если оно обрабатывает это сообщение.

Комментарии

Сообщение WM_UNICHAR похоже на WM_CHAR, но в нем используется формат преобразования Юникода (UTF)-32, тогда как WM_CHAR использует UTF-16.

Это сообщение предназначено для отправки или публикации символов Юникода в окнах ANSI и может обрабатывать символы дополнительной плоскости Юникода.

Поскольку между нажатыми клавишами и созданными символьными сообщениями не обязательно существует соответствие "один к одному", информация в слове высокого порядка параметра lParam , как правило, не является полезной для приложений. Сведения в слове высокого порядка относятся только к последнему сообщению WM_KEYDOWN , которое предшествует публикации WM_UNICHAR сообщения.

Для расширенных 101- и 102-клавишных клавиатур расширенными клавишами являются правая клавиша ALT и правая клавиша CTRL в main разделе клавиатуры; клавиши INS, DEL, HOME, END, PAGE UP, PAGE DOWN и стрелки в кластерах слева от цифровой клавиатуры; а также клавиши деления (/) и ВВОД на цифровой клавиатуре. Некоторые другие клавиатуры могут поддерживать бит расширенной клавиши в параметре lParam .

Требования

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Заголовок
Winuser.h (включая Windows.h)

См. также раздел