IME - 如何处理按键

时间:2009-10-14 11:02:39

标签: c++ windows winapi unicode

在我的游戏代码中,我通过处理WM_KEYDOWN消息来处理键输入。 wParam给了我需要的密码。

问题在于IME,尤其是KoreanIME。 我得到WM_IME_COMPOSITION然后WM_KEYUP,但绝不是WM_KEYDOWN

所以,底线是..我需要在收到WM_IME_COMPOSITION时获取密码。 有办法吗?

任何帮助将不胜感激。 谢谢!

2 个答案:

答案 0 :(得分:0)

根据http://msdn.microsoft.com/en-us/library/dd374133(VS.85).aspx,复合键位于wParam中,编码为DBCS(http://www.microsoft.com/typography/unicode/cs.htm)。我想你必须从单词中提取适当的字节并根据它来决定。

答案 1 :(得分:0)

我知道这有点晚了,但为了别人的利益,可以使用

BOOL ImmDisableIME(
  __in  DWORD idThread
);

传递UI线程的ID,即处理按键的那个。

http://msdn.microsoft.com/en-us/library/dd318535(v=VS.85).aspx