Функция MapVirtualKeyExW (winuser.h)

Преобразует (сопоставляет) код виртуального ключа в код сканирования или значение символа или преобразует код сканирования в код виртуального ключа. Функция преобразует коды с помощью языка ввода и идентификатора языкового стандарта.

Синтаксис

UINT MapVirtualKeyExW(
  [in]                UINT uCode,
  [in]                UINT uMapType,
  [in, out, optional] HKL  dwhkl
);

Параметры

[in] uCode

Тип: UINT

Код виртуального ключа или код сканирования ключа. Способ интерпретации этого значения зависит от значения параметра uMapType .

[in] uMapType

Тип: UINT

Выполняемый перевод. Значение этого параметра зависит от значения параметра uCode .

Значение Значение
MAPVK_VK_TO_VSC
0
Параметр uCode представляет собой код виртуального ключа и преобразуется в код сканирования. Если это код виртуального ключа, который не различает левый и правый ключи, возвращается код сканирования слева. Если перевода нет, функция возвращает значение 0.
MAPVK_VSC_TO_VK
1
Параметр uCode представляет собой код сканирования и преобразуется в код виртуального ключа, который не различает левый и правый ключи. Если перевода нет, функция возвращает значение 0.
Windows Vista и более поздних версий: высокий байт значения uCode может содержать 0xe0 или 0xe1 для указания расширенного кода сканирования.
MAPVK_VK_TO_CHAR
2
Параметр uCode представляет собой код виртуального ключа и преобразуется в неперемеченное символьное значение в слове нижнего порядка возвращаемого значения. Мертвые ключи (диакритические знаки) указываются путем задания верхнего бита возвращаемого значения. Если перевода нет, функция возвращает значение 0. См. заметки.
MAPVK_VSC_TO_VK_EX
3
Параметр uCode представляет собой код сканирования и преобразуется в код виртуального ключа, который различает левый и правый ключи. Если перевода нет, функция возвращает значение 0.
Windows Vista и более поздних версий: высокий байт значения uCode может содержать 0xe0 или 0xe1 для указания расширенного кода сканирования.
MAPVK_VK_TO_VSC_EX
4
Windows Vista и более поздних версий: Параметр uCode представляет собой код виртуального ключа и преобразуется в код сканирования. Если это код виртуального ключа, который не различает левый и правый ключи, возвращается код сканирования слева. Если код сканирования является расширенным, высокий байт возвращаемого значения будет содержать либо 0xe0, либо 0xe1 для указания расширенного кода сканирования. Если перевода нет, функция возвращает значение 0.

[in, out, optional] dwhkl

Тип: HKL

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

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

Тип: UINT

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

Комментарии

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

Приложение может использовать 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, MapVirtualKey и MapVirtualKeyEx. Полный список кодов виртуальных ключей см. в разделе Коды виртуальных ключей.

В режиме MAPVK_VK_TO_CHARкоды виртуального ключа — "A". Клавиши Z преобразуются в верхний регистр "A". Символы Z независимо от текущей раскладки клавиатуры. Если вы хотите перевести код виртуального ключа в соответствующий символ, используйте функцию ToUnicode .

Примечание

Заголовок winuser.h определяет MapVirtualKeyEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

См. также раздел