Windows:语言栏不会显示某些窗口的输入法选项

时间:2010-02-24 10:57:16

标签: windows input ime

我正在努力使我们的应用程序正确处理国际输入。由于我们自己处理文本输入和字体渲染,因此我编写了自定义代码来处理相应的WM_IME_ *消息。

现在,这一切都运行正常,但有一个例外:当我们的应用程序主窗口打开时,语言栏将不允许我选择任何选项。我可以将输入语言设置为日语或韩语,但不显示用于选择输入方法的菜单(如Hangul或Hiragana)。然后,当我打开另一个窗口(任何其他窗口,无论是我们的应用程序窗口之一,还是标准的“保存文件”对话框)时,都会显示选项。在那里,即使我关闭另一个窗口,他们也会留下来。然后,IME输入将在主窗口中按预期工作。但是,正如所解释的那样,只有我先打开另一个窗口。

现在,Windows如何决定是否应该显示输入法选项?由于某种原因,Windows似乎无法将我们的主窗口识别为Unicode。我该如何解决这个问题?

提前感谢任何建议,

纳斯

编辑:我注意到的另一个奇怪的事情是,对于我的主窗口(不允许我更改输入方法),当我更改输入语言时,我将收到WM_INPUTLANGUAGECHANGEREQUEST消息 - 我将其传递给DefaultWindowProcW。对于让我更改输入方法的窗口,我没有得到请求,我只得到一条WM_INPUTLANGUAGECHANGE消息(我没有得到其他窗口)。

2 个答案:

答案 0 :(得分:1)

好的,经过长时间的搜索后,我已经找到了解决这个问题的方法。我们在子窗口上调用SetFocus以响应WM_FOCUS消息,这样当窗口被带到前面时,特定的子窗口总是被聚焦。显然,这会混淆窗口的IME代码,并使其不知道窗口可以处理IME输入。

答案 1 :(得分:0)

一些注释

  • 文本服务是按窗口工作的,不是系统范围的,因此即使在一个窗口中打开,另一个窗口仍然需要打开它(除非用户将其设置为默认值)

  • 并且Text Service无法在任何窗口中运行,要启用该功能,目标计算机需要启用以下设置

    alt text