Функция ToUnicodeEx (winuser.h)
Преобразует указанный код виртуального ключа и состояние клавиатуры в соответствующий символ Юникода или символы.
Синтаксис
int ToUnicodeEx(
[in] UINT wVirtKey,
[in] UINT wScanCode,
[in] const BYTE *lpKeyState,
[out] LPWSTR pwszBuff,
[in] int cchBuff,
[in] UINT wFlags,
[in, optional] HKL dwhkl
);
Параметры
[in] wVirtKey
Тип: UINT
Преобразованный код виртуального ключа. См. Virtual-Key коды.
[in] wScanCode
Тип: UINT
Код проверки аппаратного ключа, который необходимо преобразовать. Если ключ включен, задан высокий порядок этого значения.
[in] lpKeyState
Тип: const BYTE*
Указатель на массив 256 байтов, содержащий текущее состояние клавиатуры. Каждый элемент (байт) в массиве содержит состояние одного ключа.
Если задан бит байта с высоким порядком, ключ будет отключен. Низкий бит, если задано, указывает, что ключ включен. В этой функции имеет значение только переключатель ключа CAPS LOCK. Состояние переключателя клавиш NUM LOCK и SCROLL LOCK игнорируется. Дополнительные сведения см. в GetKeyboardState.
[out] pwszBuff
Тип: LPWSTR
Буфер, получающий преобразованный символ или символы в виде массива единиц кода UTF-16. Этот буфер может быть возвращен, не завершая значение NULL, даже если имя переменной предполагает, что оно завершается значением NULL. Возвращаемое значение этого метода можно использовать для определения количества записанных символов.
[in] cchBuff
Тип: int
Размер буфера в символах, на который указывает параметр pwszBuff.
[in] wFlags
Тип: UINT
Поведение функции.
Если задан бит 0, то меню активно. В этом режиме клавиши ALT+Numeric keypad сочетания клавиш не обрабатываются.
Если задан бит 1, ToUnicodeEx будет переводить коды сканирования, помеченные как события разбиения ключей в дополнение к обычному обработке ключевых событий.
Если установлен бит 2, состояние клавиатуры не изменяется (Windows 10 версии 1607 и более поздней версии)
Все остальные биты (до 31) зарезервированы.
[in, optional] dwhkl
Тип: HKL
Входной идентификатор языкового стандарта, используемый для перевода указанного кода. Этот параметр может быть любым входным идентификатором языкового стандарта, ранее возвращенным функцией LoadKeyboardLayout.
Возвращаемое значение
Тип: int
Функция возвращает одно из следующих значений.
Возвращаемое значение | Описание |
---|---|
|
Указанный виртуальный ключ — это мертвый ключ символ (акцент или диакритический). Это значение возвращается независимо от раскладки клавиатуры, даже если несколько символов были введены и хранятся в состоянии клавиатуры. Если это возможно, даже с раскладками клавиатуры Юникода функция написала версию интервала символа недоставленного ключа в буфер, указанный pwszBuff. Например, функция записывает символ ОСТРОГО АКЦЕНТА (U+00B4), а не символ, СОЧЕТАЮЩИЙ ОСТРЫЙ АКЦЕНТ (U+0301). |
|
Указанный виртуальный ключ не имеет перевода для текущего состояния клавиатуры. Ничего не было записано в буфер, указанный pwszBuff. |
|
Один или несколько единиц кода UTF-16 были записаны в буфер, указанный pwszBuff. Возвращенный pwszBuff может содержать больше символов, чем указано возвращаемое значение. В этом случае все дополнительные символы недопустимы и должны игнорироваться. |
Замечания
Идентификатор языкового стандарта ввода — это более широкая концепция, чем раскладка клавиатуры, так как она также может охватывать преобразователь речи к тексту, редактор метода ввода (IME) или любую другую форму ввода.
Некоторые макеты клавиатуры могут возвращать несколько символов и (или) дополнительных символов в виде суррогатных пар в pwszBuff. Если символ мертвого ключа (акцент или диакритический), хранящийся в макете клавиатуры, не удалось объединить с указанным виртуальным ключом для формирования одного символа, то предыдущий введенный мертвый символ можно объединить с текущим символом.
Параметры, предоставленные функции ToUnicodeEx, могут быть недостаточно для перевода кода виртуального ключа, так как предыдущий мертвый ключ хранится в макете клавиатуры.
Как правило, ToUnicodeEx выполняет перевод на основе кода виртуального ключа. Однако в некоторых случаях можно использовать бит 15 параметра wScanCode, чтобы различать нажатие клавиши и выпуск ключа (например, для записи клавиш ALT+numpad).
Как ToUnicodeEx преобразует код виртуального ключа, он также изменяет состояние буфера клавиатуры в режиме ядра. Это изменение состояния влияет на мертвые ключи, лигатуры, alt+Numeric keypad запись ключа и т. д. Это также может вызвать нежелательные побочные эффекты, если они используются в сочетании с TranslateMessage (что также изменяет состояние буфера клавиатуры в режиме ядра).
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [только классические приложения] |
минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winuser.h (включая Windows.h) |
библиотеки |
User32.lib |
DLL | User32.dll |
См. также
концептуальные
Справочник