我正在尝试使我们的应用程序正确处理国际输入。由于我们自己处理文本输入和字体渲染,我编写了自定义代码来处理相应的 WM_IME_* 消息。
现在,这一切都很好,除了一个例外:当我们的应用程序主窗口打开时,语言栏不会让我选择任何选项。我可以将输入语言设置为日语或韩语,但没有显示用于选择输入法(如韩文或平假名)的菜单。然后,当我打开另一个窗口(任何其他窗口,无论是我们的应用程序窗口之一,还是标准的“保存文件”对话框)时,选项就会出现。一旦到了那里,即使我关闭另一个窗口,它们也会留下来。IME 输入将在主窗口中按预期工作。但是,正如所解释的,只有我先打开另一个窗口。
现在,windows 是如何决定是否显示输入法选项的呢?由于某种原因,windows 似乎无法将我们的主窗口识别为支持 Unicode。我该如何解决?
在此先感谢您的任何建议,
乔纳斯
编辑:我注意到的另一件奇怪的事情是,对于我的主窗口(它不会让我更改输入法),当我更改输入语言时,我会收到一条 WM_INPUTLANGUAGECHANGEREQUEST 消息 - 我将其传递给 DefaultWindowProcW。对于让我更改输入法的窗口,我没有收到请求,我只收到一条 WM_INPUTLANGUAGECHANGE 消息(其他窗口我没有收到)。