在WM_KEYDOWN中获取Unicode字符

时间:2010-11-29 10:06:07

标签: windows keyboard winapi

在我需要以不同方式处理大量键的应用程序中,我想要处理WM_KEYDOWN中的所有情况,而根本不使用WM_CHAR。是否可以从WM_KEYDOWN提供的虚拟键序列中获取正确的ASCII / UNICODE字符,而不是依赖于更常规的TranslateMsg / WM_CHAR?

作为一个例子:应用程序应该能够以完全不同的方式处理Shift-B,按下CTRL-B的常规B.

使用MapVirtualKey,您不使用Shift,Control和Alt键的状态,或者至少不是我能看到的状态。

正如Leo Davidson所说:你可以使用ToUnicode调用来执行VK - >自己进行Unicode转换。

1 个答案:

答案 0 :(得分:6)

WM_KEYDOWN处理字符代码,这基本上意味着键盘上的物理键。

如果你想处理unicode字符,请处理WM_CHAR(16位Unicode字符,假设你的窗口本身是unicode)或WM_UNICHAR(32位Unicode字符)。

编辑:如果您想自己进行转换,请使用ToUnicode API。