Функция ToAscii


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

Чтобы установить дескриптор раскладки клавиатуры, который используется для трансляции указанного кода, используйте функцию ToAsciiEx.

 Синтаксис

int ToAscii(
    UINT uVirtKey,
    UINT uScanCode,
    PBYTE lpKeyState,
    LPWORD lpChar,
    UINT uFlags
);

Параметры

uVirtKey

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

uScanCode

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

lpKeyState

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

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

lpChar

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

uFlags

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

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

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

Значение

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

0

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

1

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

2

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

Замечания

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

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

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

Смотри также

Обзор Ввод данных с клавиатуры, OemKeyScan, ToAsciiEx, ToUnicode, VkKeyScan

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

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

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

Windows Me

Да

Windows 98

Да

Windows 95

Да

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

User32.lib

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

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

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

Не имеется

 

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

Hosted by uCoz