在WM_KEYDOWN中获取Unicode字符

Rit*_*tra 1 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转换.

Leo*_*son 6

WM_KEYDOWN处理字符代码,基本上是指键盘上的物理键.

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

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

  • 我知道.我问了一个问题,看看TranslateMsg发送WM_CHAR的逻辑是否也可以使用另一个不使用Windows消息的路径获得(比如API调用) (2认同)