Функция ToAsciiEx 


Функция ToAsciiEx транслирует заданный код виртуальной клавиши и состояние клавиатуры в соответствующий символ или символы. Функция переводит код, используя язык ввода данных и физическую раскладку символов на клавиатуре, определяемую идентификатором языка ввода.

Синтаксис

int ToAsciiEx(
    UINT uVirtKey,
    UINT uScanCode,
    PBYTE lpKeyState,
    LPWORD lpChar,
    UINT uFlags,
    HKL dwhkl
);

Параметры

uVirtKey

[in] Определяет код виртуальной клавиши, который будет оттранслирован.

uScanCode

[in] Определяет аппаратный скэн-код клавиши, которая будет оттранслирована. Старший бит этого значения установлен, если клавиша вверху (не нажата).

lpKeyState

[in] Указывает на 256-байтовый массив, который содержит текущее состояние клавиатуры. Каждый элемент (байт) в массиве содержит состояние одной из клавиш. Если старший бит байта установлен, клавиша - внизу (нажата).

Если установлен младший бит, он указывает на то, что клавиша переключилась. В этой функции важен только бит переключения клавиши CAPS LOCK. Состояние переключения клавиш NUM LOCK и SCROLL LOCK игнорируется.

lpChar

[out] Указывает на буфер, который примет оттранслированный символ или символы.

uFlags

[in] Определяет, является ли меню активным. Этот параметр должен быть 1, если меню активно, или иначе он 0.

dwhkl

[in] Идентификатор языка ввода, который используется для трансляции данного кода. Этот параметр может быть любым идентификатором языка ввода, предварительно возвращенный функцией LoadKeyboardLayout.

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

Если заданная клавиша - мертвая клавиша, величина возвращаемого значения отрицательная. Иначе, она - одно из следующих значений:

Значение

Предназначение

0

Заданная виртуальная клавиша не транслируется для текущего состояния клавиатуры.

1

В буфер был скопирован один символ.

2

Два символа были скопированы в буфер. Это обычно случается тогда, когда символ мертвой клавиши (знак ударения или диакритический знак), сохраненный в раскладке символов на клавиатуре, не может быть скомбинирован с заданной виртуальной клавишей, чтобы сформировать единый символ.

Замечания

Идентификатор языка ввода данных - более широкое понятие чем раскладка клавиатуры, так как он может также охватывать преобразователь речи в текст,  Редактор Метода Ввода (IME) или любую другую форму ввода данных.

Параметров, данных в функции ToAscii, может быть не достаточно, чтобы перевести код виртуальной клавиши, потому что предыдущая мертвая клавиша сохраняется в раскладке символов на клавиатуре.

Как правило, ToAscii исполняет трансляцию, опираясь на код виртуальной клавиши. Однако, в некоторых случаях, бит 15 параметра uScanCode может быть использован, чтобы различить между нажатием клавиши и её отпуском. Скэн-код используется для трансляции комбинации клавиш ALT + числовая клавиша.

Хотя NUM LOCK - клавиша - переключатель, которая воздействует на поведение клавиатуры, функция ToAscii игнорирует установку переключателя (младший бит) lpKeyState (VK_NUMLOCK), потому что одного параметра uVirtKey достаточно, чтобы отличить клавиши управления курсором (VK_HOME, VK_INSERT и так далее) от числовых клавиш (VK_DECIMAL, VK_NUMPAD0 - VK_NUMPAD9).

Смотри также

Обзор Ввод данных с клавиатуры, LoadKeyboardLayout, MapVirtualKeyEx, ToUnicodeEx, VkKeyScan

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

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 4.0 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz