### 函数功能

该函数将虚拟键码翻译为扫描码或字符值，或者将扫描码翻译为虚拟键码。该函数使用由给她键盘布局句柄标识的物理键盘和输入语言来翻译这些代码。

### 函数原型

UINT MapVirtualKeyEx（UINT uCode，UINT uMapType，HKL dwhkl）；

### 参数

uCode：定义一个键的虚拟键码或扫描码。该值如何解释依赖于uMapType参数的值。
uMapType：定义将要执行的翻译。该参数的值同MapVirtuaIKe。
dwhkl：翻译给定代码所使用的键盘布局的句柄。该参数值可以是在此之前调用LoadKeyboardLayout函数返回的任何键盘布局句柄。

### 返回值

返回值可以是一扫描码，或一虚拟键码，或一字符值，这完全依赖于不同的uCode和uMapType的值。若未进行翻译，则函数返回O。

### 返回值

返回值可以是一扫描码，或一虚拟键码，或一字符值，这完全依赖于不同的uCode和uMapType的值。若未进行翻译，则函数返回0。
备注：应用程序可以使用MapVirtualKeyEx将扫描码翻译为虚拟键码常数VK_SHIT；VK_CONTROL和VK_MENU。反之亦然。这些翻译不区分左右shift，ctrl，alt键。应用程序可以通过调用MapVirtualKey函数时将uCode参数设置为如下的虚拟键码常数来获得分别相应于上述键的左右键的扫描码：
Vk_LSHIFT，VK_RDHIFT；VK_LCONTROL，VK_RCONTROL；VK_LMENU，VK_RMENU
仅当应用程序调用GetKeyboardState，SetKeyboardState，GetAsyncKeystate，GetKeyState，MapVirtuaIKey和MapVirtualKeyEx函数时，才可用这些区分左右键的常数。若要查看完整的虚拟键码表，请参考Virtual.KeyCodes。

### 速查

Windows NT：4.0及以上版本；Windows：95及以上版本；Windows CE：不支持；头文件：winuser.h；库文件：user32.lib；Unicode：在Windows NT上实现为Unicode和ANSI两种版本。