我想制作一个处理用户输入的控件,因此我希望能够处理不同的键盘,其中一种方法是使用 IME。
如果您不处理它,当您启用 IME 时(例如,日语书写处于事件状态),会出现一个 float 窗口。我找到了需要处理的消息,但我不知道如何将我捕获的 key 发送到 IME 以及何时获得有效的转换字符。
最佳答案
我是一名 Microsoft SDE,曾经维护(Windows 和 Office)韩语 IME 一段时间...
不幸的是,最好的 IME API 文档是由非 Microsoft 站点提供的:
- IME 编程示例(非常注释好的代码!)来自 Google 的 Chrome 浏览器
- Win32 Multilingual IME Overview for IME Development ( Archived )
- Win32 Multilingual IME Application Programming Interface ( Archived )
(值得微软称赞的是,最后两个曾经是 Windows 驱动程序开发工具包的一部分)
这里是微软官方文档:Input Method Manager (MSDN)
还有一个基于文本服务框架 (TSF) 的新的、更高级的 IME,Microsoft 希望您使用它,但它更加复杂,而且旧 API 的模拟效果非常好。如果您不需要任何高级功能(例如通过平板电脑输入/语音识别/更高级的 IME/等),那么使用旧 API 就足够了。
有关文本服务框架的最佳文档是 TSF Aware Blog由另一位 Microsoft 开发人员编写。如果您走这条路,Eric Brown 甚至可能亲自回答您的问题。
这是 TSF 的官方 Microsoft 文档:Text Services Framework (MSDN)
您可能会发现 TSF 的一个有用功能是抑制 IME 呈现的能力(例如,需要自己呈现 IME 的全屏游戏需要)。只需告诉 TSF 您的应用程序将呈现 IME GUI,然后实现一个空的呈现方法:UILess Mode Overview (MSDN)
关于windows - 你如何使用输入法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434048/