Поделиться через


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

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

Синтаксис

UINT MapVirtualKeyA(
  [in] UINT uCode,
  [in] UINT uMapType
);

Параметры

[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.

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

Тип: UINT

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

Комментарии

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

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

Приложение может получить код сканирования, соответствующий левому или правому экземпляру одного из этих ключей, путем вызова MapVirtualKey с параметром uCode , установленным для одной из следующих констант кода виртуального ключа:

  • VK_LSHIFT
  • VK_RSHIFT
  • VK_LCONTROL
  • VK_RCONTROL
  • VK_LMENU
  • VK_RMENU

Эти различающиеся слева и справа константы доступны приложению только с помощью функций GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, MapVirtualKey и MapVirtualKeyEx . Полный список кодов виртуальных ключей см. в разделе Коды виртуальных ключей.

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

Примечание

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

Требования

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

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