将VK_CODE转换为可显示的字符串

时间:2010-12-23 16:59:51

标签: c++ windows winapi

编写Windows应用程序时,文档说某些VK_CODE是可显示的字符,例如VK_OEM1是“o with a mumlaut”。如何从非ASCII字符的WPARAM转换为可显示的字符串?我使用的是UTF-16。

2 个答案:

答案 0 :(得分:3)

也许您正在寻找GetKeyNameText Function

它检索表示密钥名称的字符串。

答案 1 :(得分:2)

  

就像VK_OEM1是“带有变音符号的o”。

也许在你的机器上。不是我的,它是';'或':',取决于Shift键状态。这些是虚拟密钥代码。代表键入键的那些键被ToUnicodeEx()转换为一个字符,这是一个采用键盘布局的函数。当然,你有非键入键,根本不产生任何字符,如VK_F1或VK_NUMLOCK。当键盘布局具有死键时,这会变得更加复杂,这种键用于在字符顶部获得变音符号。这就是为什么这个功能还需要一个键盘状态。

像瘟疫一样避免这种情况,WM_CHAR是你的朋友。