输入法状态(中、英、全半角)用一个数值表示,网上很多代码都是直接判断这个状态值是否某个数值,这实际上是错的。天下代码一大抄,一个人错了大家都跟着错。
其实输入法状态需要按位判断。 例如判断输入法的中/英状态用 aardio 应该这样写: 3 & key.ime.control(,1/*_IMC_GETCONVERSIONMODE*/)
判断输入法是否开启中文标点,应当这样写:
0x400 & key.ime.control(,1/*_IMC_GETCONVERSIONMODE*/)
aardio 提供了一个更简单的函数:
var openState,mode = key.ime.state();
上面第一个返回值表示输入法是否打开,mode 为1 表示半角标点, mode 为 2 表示全角标点,mode 为 3 表示开启中文标点。
这个方法支持所有操作系统,支持所有输入法(这都不支持的输入法如果你也敢用 —— 那就只能佩服了)。 下面我们写一个输入法提示工具,先看效果: 
原理就是用一个 plus 控件跟着鼠标走,你可以用代码画得更酷一些,plus 控件可以直接显示图标、文字图标、动画这些 …… 当然这种事情轻快实用更重要,动画太多就程序员看得高兴,用户不一定喜欢。
这里简单说一下用 plus 做屏幕悬浮、鼠标穿透窗口的要点: 1、控件的「浮动透明」、「禁用」 属性设为 true ,控件的 「剪切背景」、「事件回调」 设为 false,控件的创建参数里加上 (不用加,请忽略这句)。 3、调用 winform.plus.orphanWindow(true) 让控件可以显示在窗口外部。
源代码很简单,我放到 aardio 自带范例里了,请自取:

|