Win32 API. Функции и сообщения ввода информации с клавиатуры
Страница 25. Функция ToUnicode


Функция ToUnicode

(вУникод)

Функция ToUnicode переводит заданный код виртуальной клавиши и состояние клавиатуры в соответствующий символ или символы Unicode.

Синтаксис

int ToUnicode(
UINT wVirtKey,// код виртуальной клавиши
UINT wScanCode,// скэн-код
PBYTE lpKeyState,// адрес массива состояния клавиши
LPWSTR pwszBuff,// буфер для трансляции клавиши
int cchBuff,// размер буфера для трансляции клавиши
UINT wFlags// установка флажков, согласования функций
);

Параметры
wVirtKey
Определяет код виртуальной клавиши, который будет оттранслирован.
wScanCode
Определяет аппаратный скэн-код клавиши, которая будет оттранслирована. Старший бит этого значения установлен, если клавиша вверху (не нажата).
lpKeyState
Указывает на 256-байтовый массив, который содержит текущее состояние клавиатуры. Каждый элемент (байт) в массиве содержит состояние одной из клавиш. Если старший бит байта установлен, клавиша - внизу (нажата).
pwszBuff
Указывает на буфер, который примет оттранслированный символ или символы Unicode.
cchBuff
Определяет размер буфера, указанного параметром pwszBuff, в символах.
wFlags
Набор битовых флажков, которые определяют поведение функции. Бит 0 установлен, если меню активно. Биты от 1 до 31 зарезервированы.

Возвращаемые значения
Функция возвращает одно из следующих значений:

  • - 1 - Заданная виртуальная клавиша - символ мертвой клавиши (знак ударения или диакритический знак). Это значение возвращается независимо от раскладки символов на клавиатуре, даже если несколько символов были введены с клавиатуры и сохранены в состоянии клавиатуры. Если возможно, наравне с раскладками символов Уникода на клавиатуре, функция запишет разделенную пробелами версию символа мертвой клавиши в буфер, заданный pwszBuffer. Например, функция запишет символ SPACING ACUTE (0x00B4), а не символ NON_SPACING ACUTE (0x0301).
  • 0 - Заданная виртуальная клавиша не транслируется для текущего состояния клавиатуры. Ничего не пишется в буфер, определенный при помощи pwszBuffer
  • 1 - Один символ был записан в буфер, заданный pwszBuffer.
  • 2 или больше - Два или больше символа были записаны в буфер, заданный pwszBuff. Наиболее общая причина для этого является то, что символ мертвой клавиши (знак ударения или диакритический знак) сохраненный в раскладке символов на клавиатуре не может быть объединен с заданной виртуальной клавишей, чтобы сформировать единый символ.

Замечания
Параметров, данных в функции ToUnicode, может быть не достаточно, чтобы перевести код виртуальной клавиши, потому что предыдущая мертвая клавиша сохраняется в раскладке символов на клавиатуре.
Как правило, ToUnicode исполняет трансляцию, опираясь на код виртуальной клавиши. Однако в некоторых случаях, бит 15 параметра wScanCode может быть использован, чтобы различить между нажатием клавиши и её отпуском.

Смотри также
ToAscii, VkKeyScan

Размещение и совместимость ToUnicode

Windows NTДа 
Win95Нет
Win32sНет
Импортируемая библиотекаuser32.lib
Заголовочный файлwinuser.h
UnicodeНет
Замечания по платформеНе имеется

 
« Предыдущая статья   Следующая статья »