[Now Supported on 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键的左和右实例。通过调用【UCODE】 【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