繁体   English   中英

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

[英]Windows: Language Bar will not show input method options for some of my windows

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

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

现在,窗口如何决定是否应显示输入法选项? 出于某些原因,看来Windows无法将我们的主窗口识别为Unicode。 我该如何解决?

在此先感谢您的任何建议,

乔纳斯

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

好的,经过长时间的搜索,我已经能够找出导致此问题的原因。 我们正在响应WM_FOCUS消息而在子窗口上调用SetFocus,以便当将某个窗口置于最前面时,特定的子窗口总是被聚焦。 显然,这混淆了窗口的IME代码,并使其不知道该窗口可以处理IME输入。

一些注意事项

  • 文字服务在每个窗口中都可以使用,而不是在整个系统中都可以使用,因此即使在一个窗口中打开它,仍然需要在另一个窗口中打开它(除非用户将其设置为默认值)

  • 而且Text Service在任何窗口中均不起作用,要启用该功能,目标计算机需要启用以下设置

    替代文字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM