ToUnicodeEx功能将指定的虚拟键代码和键盘状态转换为相应的Unicode字符或字符。
int ToUnicodeEx(
UINT 【wVirtKey】, | //虚拟键代码 |
UINT 【wScanCode】, | //扫描代码 |
PBYTE 【lpKeyState】, | //键状态数组的地址 |
LPWSTR 【pwszBuff】, | //用于翻译的键缓冲区 |
INT 【cchBuff】, | //翻译密钥缓冲区的大小 |
UINT 【wFlags】, | //设置功能调节标志 |
HKL【dwhkl】 | //键盘布局句柄 |
); |
参数
【wVirtKey】
指定要翻译的虚拟键代码。
【wScanCode】
指定要翻译的键的硬件扫描代码。该键的高位被设置为键。
【lpKeyState】
指向包含当前键盘状态的256字节数组。数组中的每个元素(字节)包含一个键的状态。如果设置了一个字节的高位,则该键被关闭。
【pwszBuff】
指向接收翻译的Unicode字符或字符的缓冲区。
【cchBuff】
指定由【pwszBuff】参数指向的缓冲区的字符大小。
【wFlags】
一组影响功能行为的位标志。如果菜单有效,请设置位0。位1至31保留。
【dwhkl】
标识用于转换给定代码的键盘布局。此参数可以是以前由LoadKeyboardLayout功能返回的任何键盘布局句柄。
返回值
该函数返回以下值之一:
值 | 含义 |
- 1 | 指定的虚拟键是一个死键字符(口音或变音符号)。无论键盘布局如何,即使输入了多个字符并以键盘状态存储,也会返回此值。如果可能,即使使用Unicode键盘布局,该函数已将死锁字符的间隔版本写入【pwszBuffer】指定的缓冲区。例如,函数写入字符SPACING ACUTE(0x00B4),而不是字符NON_SPACING ACUTE(0x0301)。 |
0 | 指定的虚拟键对于键盘的当前状态没有转换。没有写入【pwszBuffer】指定的缓冲区。 |
1 | 一个字符被写入【pwszBuffer】指定的缓冲区。 |
2以上 | 两个或多个字符被写入由【pwszBuff】指定的缓冲区。最常见的原因是存储在键盘布局中的死键字符(重音或变音符)不能与指定的虚拟键组合形成单个字符。 |
备注
提供给ToUnicodeEx功能的参数可能不足以翻译虚拟键代码,因为之前的死钥存储在键盘布局中。
通常,ToUnicodeEx基于虚拟密钥代码执行翻译。然而,在某些情况下,【wScanCode】参数的第15位可用于区分按键和键释放。
也可以看看