IMEMode问题

andylauxing 2016-12-24 07:12:43
IMEMode为何不起作用?不知有没有狐友遇见。
我是想在某些文本框获得焦点时,自动打开输入法,或某些控件关掉输入法。
...全文
1239 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
o0风箫吟0o 2017-04-24
  • 打赏
  • 举报
回复
测试了一下,XP下也是可以的。但我没有Win7及以上系统,未作测试。 谢谢夜猫版主分享。
andylauxing 2016-12-26
  • 打赏
  • 举报
回复
是的,以前在XP下用得好好的. 其实这个需求还有是必要的,例如: 有些文本框输入的只有数字或字母,这样关闭输入法是最好的,免得用户再切换,很烦.
dfwxj 2016-12-26
  • 打赏
  • 举报
回复
不是一般的烦。打开输入法还好,关闭时会导致光标消失,不知道光标当前位置在哪里,使用很不方便
weiyiscyy 2016-12-25
  • 打赏
  • 举报
回复
引用 1 楼 dkfdtf 的回复:
从 Window Vista 开始,微软引入了新的 TSF 输入法接口,与以前的接口不同;另一方面,微软停止了 vfp 的后续版本开发,导致 vfp 的 IME 功能从此再无更新,因此出现你说的问题。 通常来说,除非是编辑类软件,一般不建议干扰用户对输入法的切换,用过 SQL Server SSMS 工具的人会发现,其自动切换输入法的功能实在恶心,每次输入查询命令时都需要再手工切换回英文状态 当然也有对此做有限修复的方法,如果你的软件确实需要此功能的话,可以再讨论
请问有什么办法可以修复这个问题?,谢谢。。
都市夜猫 2016-12-25
  • 打赏
  • 举报
回复
测试代码到这里下载:http://download.csdn.net/detail/dkfdtf/9720632

简单解释下
1. 为了可重用,派生了一个 TextBox 的子类 txt,测试表单上的三个 Text 都是它的实例。
2. 为避免原生的 IMEMode 属性干扰,txt 类自定义了一个 _IMEMode 属性,由它接管原 IMEMode 的工作,也就是把 IMEMode 给废了,IMEMode 会永远是 0,你设置的值会转移到 _IMEMode 属性上
3. 当 txt 获得焦点时,会调用自定义的 _SetImeStatus 方法,用仅剩的几个还有效的 imm 系列 API 函数来开关输入法

因为我从没使用过这个属性,手上也没 xp 系统,因此不清楚在 xp 下这个属性的行为,不过也发现了有待改进之处:如果输入法是在英文输入状态,如图:

进入 IMEMode = 1 的文本框时,不会自动切换到中文输入状态;查了下 MSDN,xp 以前的系统可以用 ImmSetConversionStatus 函数切换,但实验结果是此函数在 Win7 下已失效,得另寻它途。也试过 ImmSimulateHotKey,可用但不可靠,再说吧
都市夜猫 2016-12-24
  • 打赏
  • 举报
回复
从 Window Vista 开始,微软引入了新的 TSF 输入法接口,与以前的接口不同;另一方面,微软停止了 vfp 的后续版本开发,导致 vfp 的 IME 功能从此再无更新,因此出现你说的问题。 通常来说,除非是编辑类软件,一般不建议干扰用户对输入法的切换,用过 SQL Server SSMS 工具的人会发现,其自动切换输入法的功能实在恶心,每次输入查询命令时都需要再手工切换回英文状态 当然也有对此做有限修复的方法,如果你的软件确实需要此功能的话,可以再讨论

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧