Страница 25 из 45
Функция 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Нет Замечания по платформеНе имеется |