10.16.1.16 - Функция MapVirtualKeyEx

(ПреобразоватьВиртуальнуюКлавишуРасширенная)

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

Функция MapVirtualKeyEx транслирует (преобразует) код виртуальной клавиши в скэн-код или символьное значение, или переводит скэн-код в код виртуальной клавиши. Функция транслирует коды, используя язык ввода и физическую раскладку символов на клавиатуре, идентифицированную данным дескриптором раскладки.

Синтаксис

UINT MapVirtualKeyEx(
	UINT uCode,		// код виртуальной клавиши или скэн-код
	UINT uMapType,	// трансляция для выполнения
	HKL dwhkl		// дескриптор раскладки символов для клавиатуры
);

Параметры
uCode
Определяет код виртуальной клавиши или скэн-код для клавиши. Как это значение интерпретируется, зависит от значения параметра uMapType.
uMapType
Определяет трансляцию для исполнения. Значение этого параметра зависит от значения параметра uCode:

Значение 		Предназначение
0		uCode - код виртуальной клавиши и транслируется в скэн-код. Если это код виртуальной клавиши, 
		который не делает различия между лево - и правосторонними клавишами, возвращается скэн-код левой 
		клавиши. Если не происходит никакой трансляции, функция возвращает значение 0.
1		uCode - скэн-код и транслируется в код виртуальной клавиши, который не делает различия между 
		лево - и правосторонними клавишами. Если не происходит никакой трансляции, функция возвращает 
		значение 0.
2		uCode - код виртуальной клавиши и транслируется в значение символов нижнего регистра, в 
		младшем слове величина возвращаемого значения. Мертвые клавиши (диакритические знаки) обозначаются 
		при помощи установки старшего бита величины возвращаемого значения. Если не происходит никакой 
		трансляции, функция возвращает значение 0.
3		uCode - скэн-код и транслируется в код виртуальной клавиши, который делает различие между лево - 
		и правосторонними клавишами. Если не производится никакой трансляции, функция возвращает значение 0.

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

Возвращаемые значения
Величина возвращаемого значения является или скэн-кодом, кодом виртуальной клавиши, или символьным значением, которое зависит от значения uCode и uMapType. Если не производится никакой трансляции, величина возвращаемого значения нулевая.

Замечания
Прикладная программа может использовать MapVirtualKeyEx, чтобы перевести скэн-коды в константы кода виртуальной клавиши VK_SHIFT, VK_CONTROL и VK_MENU и наоборот. Эти трансляции не делают различия между левыми и правыми экземплярами клавиш SHIFT, CTRL или ALT. Прикладная программа может получить скэн-код, соответствующий для левого или правого экземпляра одной из этих клавиш путем вызова MapVirtualKeyEx с установкой uCode в одну из следующих констант кода виртуальной клавиши:

VK_LSHIFT	VK_RSHIFT
VK_LCONTROL	VK_RCONTROL
VK_LMENU	VK_RMENU

Эти лево - и правосторонние константы доступны прикладной программе только через функции GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, MapVirtualKey и MapVirtualKeyEx.

Смотри также
GetAsyncKeyState, GetKeyboardState, GetKeyState, LoadKeyboardLayout, MapVirtualKey, SetKeyboardState

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

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 05.08.2002