C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 10.16.1.23 - Функция ToAsciiEx / Клавиатура. / Win32 API

10.16.1.23 - Функция ToAsciiEx

(вASCIIРасширенная)

[Теперь поддерживается в Windows NT]

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

Синтаксис

int ToAsciiEx
(
	UINT uVirtKey,	// код виртуальной клавиши
	UINT uScanCode,	// скэн-код
	PBYTE lpKeyState,	// адрес массива состояния клавиши
	LPWORD lpChar,	// буфер для трансляции клавиши
	UINT uFlags,	// флажок активного меню
	HKL dwhkl	// дескриптор раскладки символов на клавиатуре
);

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

Указывает на 256-байтовый массив, который содержит текущее состояние клавиатуры. Каждый элемент (байт) в массиве содержит состояние в одной из клавиш. Если старший бит байта установлен, клавиша - внизу (нажата).
Если установлен младший бит, он указывает на то, что клавиша подключена. В этой функции важен только бит подключения клавиши CAPS LOCK. Состояние переключения клавиш NUM LOCK и SCROLL LOCK игнорируется.
lpChar
Указывает на буфер, который примет оттранслированный символ или символы Windows.
uFlags
Определяет, является ли меню активным. Этот параметр должен быть 1, если меню активно, или иначе 0.
dwhkl
Идентифицирует раскладку символов на клавиатуре, чтобы использовать для перевода данного кода. Этот параметр может быть любой дескриптор раскладки символов на клавиатуре, предварительно возвращенный функцией LoadKeyboardLayout.

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

  • 0 - Заданная виртуальная клавиша не транслируется для текущего состояния клавиатуры.
  • 1 - Один символ Windows был скопирован на буфер.
  • 2 - Два символа были скопированы в буфер. Это обычно случается, когда символ мертвой клавиши (знак ударения или диакритический знак), сохраненный в раскладке символов на клавиатуре, не может быть скомбинирован с заданной виртуальной клавишей, чтобы сформировать единый символ.

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

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

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

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

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

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

| |
Автор Владимир Соковиков.
[AD]