完整的文档参考: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此函数是与一起使用的应用程序定义的回调函数ImmEnumRegister

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

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

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

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

输入法编程:获取输入法候选列表

如何在游戏中获取输入法候选列表本文讲述在windows操作系统中如何通过系统提供的输入法接口获取当前输入法的候选列表信息。在全屏游戏或需要自绘输入法候选列表的软件中均需使用此技术。在阅读之前,请务必了

window10此电脑删除资源管理器自带的载,视频,图片,音乐,档,桌面

win10新安装系统后,打开此电脑 多了一些东西 看起来比较碍眼可以通过注册表删除搜索注册表 地址栏输入HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\C

zblog网站批量免登录管理器

插件地址:https://app.zblogcn.com/?id=15655批量建站必备神器,多个网站一键切换后台 专业seoer的好帮手专业的seoer在维护大量网站时,来回切换后台, 反复登录后台

TSF输入法

转自https://blog.csdn.net/yang1fei2/article/details/118977318 TSF 即文本服务框架的英文缩写微软官方文档(文本服务框架) https://l

QQ拼音输入法智能标点设置 左右括号 左右引号 自动补全

打个左括号 自动出来右括号 虽然有时候很方便但是有时候也会感觉这输入法有点多管闲事啊!!!还是需要啥打啥比较好 在属性设置里 其他设置下面有个 智能标点设置的按钮 点开后 根据需要开启或关闭 智能

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

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

多多输入法:非码键(标点符号)顶屏

软件上面的选项:非编码键(标点符号)顶屏配置文件内部显示名字:是否打开非编码按键顶屏=是如果设置为 是当输入c++的时候,可以正常上屏c++否则 输入c的时候 是正常的,但是再输入++的时候,c就没有