完整的文档参考:https://docs.microsoft.com/zh-cn/windows/win32/intl/input-context

"输入上下文" 是由 IMM 维护的内部结构。 它包含有关 IME 状态的信息,并由 IME 窗口使用。 默认情况下,操作系统会创建一个输入上下文并将其分配给每个线程。 在该线程中,此默认输入上下文为共享资源,并且与每个新创建的窗口关联。

若要在 IME 中检索或设置信息,IME 感知应用程序必须首先检索与指定窗口关联的输入上下文的句柄。 应用程序通过使用 ImmGetContext 函数来检索句柄。 在对 IMM 函数的后续调用中,它可以使用检索到的句柄来检索和设置 IME 值,如组合窗口样式、撰写样式和状态窗口位置。 应用程序使用完上下文后,必须使用 ImmReleaseContext 函数发布上下文。

由于默认输入上下文是共享资源,因此应用程序对其所做的任何更改都将应用于该线程中的所有窗口。 但是,应用程序可以通过创建自己的输入上下文并将其与一个或多个线程窗口相关联,来重写此默认行为。 对应用程序特定的输入上下文所做的更改仅适用于与上下文关联的窗口。

应用程序可以通过使用 ImmCreateContext 函数来创建输入上下文。 若要将上下文分配给窗口,应用程序将调用 ImmAssociateContext 函数。 此函数返回前面关联的输入上下文的句柄。 如果应用程序尚未与窗口关联输入上下文,则返回的句柄用于默认输入上下文。 通常情况下,应用程序会保存此句柄,稍后在不再需要自定义的输入上下文时,会将其与窗口将。

输入上下文与窗口相关联后,操作系统会在窗口激活并接收输入焦点时自动选择该上下文。 输入上下文中的样式和其他信息会影响该窗口的后续键盘输入,从而确定 IME 的操作方式。

在终止之前,应用程序必须销毁任何自定义的输入上下文。 首先,应用程序使用 ImmAssociateContext 函数从线程中使用 windows 创建的任何关联中删除输入上下文。 然后,它会调用 ImmDestroyContext 函数。


相关推荐

输入法管理器(IMM)函数大全(Windows CE 5.0)

imm好像要被弃用了 还是研究TSF输入法 吧 ,虽然没啥鸟用了 但是还是搬运一下下吧EnumRegisterWordProc此函数是与一起使用的应用程序定义的回调函数ImmEnumRegisterW

IME输入法编程心得(转载) 1

原文地址:https://www.cnblogs.com/freedomshe/archive/2012/11/30/ime_learning.html自然语言处理的输入法作业成品没有做出来,但不想再

输入法编程可能用的到的API接口 IME结构

输入法管理器:GetSystemMetrics(82) // 常量: SM_IMMENABLED 确定是否已启用 IMMIME开发就是实现类似“输入法名字.ime”这样一个动态库(编译的时候通常将.

[输入法]TSF框架中预先屏的字符管理和控制

在TSF框架中有时候我们需要通过框架上屏一些占位字符来进行定位,这时候我们就需要对预先上屏的字符进行管理,以微软的输入法为例图中红框框选出来的部分就是预先上屏的字符。在TSF框架中通过ITfRange

输入法开发:疑难杂症

套娃开始:当键盘事件被触发时,获得的参数是ITfContext。但是ITfContext并不能直接修改内容添加文字等,需要调用RequestEditSession,传入一个ITfEditSession

TSF(Text Services Framework)和输入法

1.TSF输入接口IMM-IME架构成熟,稳定,易于实现,在Windows中被广泛使用,甚至在Linux曾大量使用的中文输入接口SCIM中也可以看到IMM-IME的影子。但是由于IMM-IME在操作权

获取输入法坐标

以下是微软TSF输入法取坐标的方法,从里面扒出来的int 取坐标(ITfContext *pContext, TfEditCookie ec, ITfComposition* pRangeCompos

微软输入法TSF SampleIME 源码分析(转载)

类:CCandidateWindow,候选字窗口CCompositionPricessorEngine,拼写引擎CSampleIME,主程序CStringRange, 一个特殊的字符串类 见于 Sam

输入法的注册、安装和卸载

注册输入法输入法的安装和普通应用程序有一个大的区别是,除了复制文件到安装目录、做一些必要的设置外,还需要向Windows系统注册这个输入法。我们前期一篇博文 TSF(Text Service Fram

逗比的输入法实现(二):基础概念和常用接口

为什么叫 Meow?因为这是给猫用的输入法。。。目录(一):基本情况(二):基础概念和常用接口(三):整体构架(四):编辑和候选(五):界面管理和无界面模式(六):词库和候选算法(七):皮肤的实现(八