Сообщение WM_UNICHAR пересылается окну с фокусом клавиатуры тогда, когда функцией TranslateMessage транслируется сообщение WM_KEYDOWN. Сообщение WM_UNICHAR содержит код символа клавиши, которая была нажата.
Сообщение WM_UNICHAR эквивалентно сообщению WM_CHAR, но оно использует Unicode формат преобразования (UTF) - 32, принимая во внимание, что WM_CHAR использует UTF-16. Оно предназначено, чтобы отправлять или пересылать символы Unicode окнам ANSI, и оно может обрабатывать символы Unicode Supplementary Plane (Дополнительной плоскости Unicode).
Синтаксис
|
Параметры
wParam
Определяет код символа клавиши.
Если wParam - UNICODE_NOCHAR и приложение обрабатывает это сообщение, тогда возвращается значение ИСТИНА (TRUE). Функция DefWindowProc возвратит значение ЛОЖЬ (FALSE) (значение по умолчанию).
Если wParam - не UNICODE_NOCHAR, возвращается значение ЛОЖЬ (FALSE). Функция DefWindowProc (Unicode) помещает сообщение WM_CHAR с теми же самыми параметрами, а функция DefWindowProc (ANSI) помещает или одно или два сообщения WM_CHAR соответствующее символу (ам) ANSI.
lParam
Определяет счет повторений, скэн-код, флажок дополнительной клавиши, контекстный код, флажок предыдущего состояния клавиши и флажок переходного состояния, как показано в следующей таблице:
Значение
Описание
0-15
Определяет счет повторений текущего сообщения. Значение равно числу автоповтора нажатий клавиши в результате того, что пользователь удерживает клавишу нажатой. Если нажатие клавиши удерживается достаточно долго, отправляются многочисленные сообщения . Однако, счет повторений не накапливается.
16-23
Определяет скэн-код. Значение зависит от фирмы - изготовителя комплектного оборудования (
OEM).24
Определяет, является ли клавиша дополнительной клавишей, типа правосторонних клавиш
ALT и CTRL, которые появляются на усовершенствованной 101- или 102-клавишной клавиатуре. Значение равно 1, если это дополнительная клавиша; иначе, оно равно 0.25-28
Зарезервировано; не используется.
29
Определяет контекстный код. Это значение равно 1 в том случае, если клавиша
ALT удерживается, в то время как клавиша нажата; иначе, значение равно 0.30
Определяет предыдущее состояние клавиши. Это значение равно 1 в том случае, если клавиша была нажата перед отправкой сообщения или оно равно 0, если клавиша была не нажата.
31
Определяет переходное состояние. Значение равно 1, если клавиша отпускается или оно равно 0, если клавиша нажимается.
Возвращаемые значения
Прикладная программа должна возвратить нуль, если она обрабатывает это сообщение.
Замечания
Поскольку не имеется обязательного соответствия один к одному между нажатыми клавишами и сгенерированными символьными сообщениями, информация в старшем слове параметра lParam вообще-то бесполезна для прикладных программ. Информация в старшем слове применяется только к самому последнему сообщению WM_KEYDOWN, которое предшествует постановке в очередь сообщения WM_UNICHAR
Для усовершенствованных 101- и 102-клавишных клавиатур, дополнительными клавишами являются правая ALT и правая CTRL в основной части клавиатуры; INS, DEL, HOME, END, PAGE UP, PAGE DOWN и клавиши курсора в группах слева от цифровой клавиатуры; делитель (/) и клавиши ENTER в цифровой клавиатуре. Некоторые другие клавиатуры могут поддерживать бит дополнительной клавиши в параметре lParam.
Смотри также
Обзор Ввод данных с клавиатуры, TranslateMessage, WM_CHAR, WM_KEYDOWN
Размещение и совместимость WM_UNICHAR |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Нет |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |