1

我有一个多语言应用程序,我必须将 VK 扫描代码转换为当前键盘布局指定的适当字符,前提是它们映射到某些字符表示,而不仅仅是动作、状态或其他元使用。我将如何做到这一点,以便它可以使用不同的语言在不同的 Windows 上移植?

我可以为 VK 扫描代码编写一个映射函数,但在WinUser.h文件中,我正在阅读以下内容:

#define VK_OEM_4          0xDB  //  '[{' for US
#define VK_OEM_5          0xDC  //  '\|' for US
#define VK_OEM_6          0xDD  //  ']}' for US
#define VK_OEM_7          0xDE  //  ''"' for US

这表明如果键盘不是美国的,这可能会有所不同。必须有一个函数可以调用,以通过键盘驱动程序或其他东西进行适当的映射,对吧?

4

1 回答 1

0

可靠的解决方案是处理WM_CHAR消息。将字符输入与击键分离为您提供映射,不仅支持内置的 Windows 键盘布局,还支持 IME、语音 API、手写和其他第三方输入法。MapVirtualKey,ToUnicode并且相关函数依赖于 Windows 内核中关于死键的内部状态,因此不能保证总是返回正确的字符。

于 2018-01-18T04:01:39.967 回答