Функция MapVirtualKeyEx транслирует (преобразует) код виртуальной клавиши в скэн-код или символьное значение, или переводит скэн-код в код виртуальной клавиши. Функция транслирует коды, используя язык ввода и идентификатор языка ввода.
Синтаксис
UINT MapVirtualKeyEx( UINT uCode, UINT uMapType, HKL dwhkl ); |
Параметры
uCode
[in] Определяет код виртуальной клавиши или скэн-код для клавиши. Как это значение интерпретируется, зависит от значения параметра uMapType.
uMapType
[in] Определяет трансляцию для исполнения. Значение этого параметра зависит от значения параметра uCode:
Значение
Предназначение
0
uCode - код виртуальной клавиши и транслируется в скэн-код. Если это код виртуальной клавиши, который не делает различия между лево - и правосторонними клавишами, возвращается скэн-код левой клавиши. Если трансляции не происходит, функция возвращает значение 0.
1
uCode - скэн-код и транслируется в код виртуальной клавиши, который не делает различия между лево - и правосторонними клавишами. Если трансляции не происходит, функция возвращает значение 0.
2
uCode - код виртуальной клавиши и транслируется в значение символов нижнего регистра, в младшем слове которого величина возвращаемого значения. Мертвые клавиши (диакритические знаки) обозначаются при помощи установки старшего бита величины возвращаемого значения. Если трансляции не происходит, функция возвращает значение 0.
3
Windows NT/2000/XP: uCode - скэн-код и транслируется в код виртуальной клавиши, который делает различие между лево - и правосторонними клавишами. Если трансляции не происходит, функция возвращает значение 0.
dwhkl
[in] Идентификатор языка ввода, который используется для трансляции заданного кода. Этот параметр может быть любой идентификатором языка ввода, предварительно возвращенный функцией
LoadKeyboardLayout.Возвращаемые значения
Величина возвращаемого значения является или скэн-кодом, или кодом виртуальной клавиши, или символьным значением, которое зависит от значения uCode и uMapType. Если трансляции не происходит, функция возвращает значение 0.
Замечания
Идентификатор языка ввода данных - более широкое понятие, чем раскладка клавиатуры, так как оно может также заключать в себе преобразователь речи в текст, Редактор Метода Ввода (IME), или любая другая форма ввода данных.
Прикладная программа может использовать MapVirtualKeyEx, чтобы перевести скэн-коды в константы кода виртуальной клавиши VK_SHIFT, VK_CONTROL и VK_MENU и наоборот. Эти трансляции не делают различия между левыми и правыми экземплярами клавиш SHIFT, CTRL или ALT.Windows NT/2000/XP: Прикладная программа может получить скэн-код, соответствующий для левого или правого экземпляра одной из этих клавиш путем вызова MapVirtualKeyEx с установкой uCode в одну из следующих констант кода виртуальной клавиши:
VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
Эти лево - и правосторонние константы доступны прикладной программе только через функции GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, MapVirtualKey и MapVirtualKeyEx. Список заполненных таблиц кодов виртуальной клавиши смотри в статье Коды виртуальных клавиш.
Windows 95/98/Me: MapVirtualKeyExW поддерживается подпрограммой Microsoft Layer for Unicode (MSLU). Чтобы использовать подпрограмму, Вы должны добавить некоторые файлы к вашему приложению, как это определено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Смотри также
Обзор Ввод данных с клавиатуры, GetAsyncKeyState, GetKeyboardState, GetKeyState, LoadKeyboardLayout, SetKeyboardState
Размещение и совместимость MapVirtualKeyEx |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 4.0 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |