首先,我认为中文输入法窗口有如下特性:<br> 1、中文输入法进程一直运行,所谓的“关闭”、“打开”只是窗口隐藏和显现<br> 2、中文输入法窗口不具有焦点属性<br> 3、中文输入法的窗口显现时将截获所有的键盘消息<br> 4、中文输入法窗口是悬浮窗口[菜单及网络蚂蚁的拖放窗口具有此特性]<br>根据以上特性,以下是一嵌入式操作系统上中文输入法实现原理:<br>首先中文输入法进程在系统启动时即加载运行[此时窗口不可见],它监视所有的键盘消息,<br>当有激活中文输入法的热键消息时,使自己主窗口可见,截获所有的键盘消息,处理自己关心<br>的消息[如生成汉字],之后将自己不关心和处理后的消息分发到原来输入目标窗口。<br>我认为兰点linux的中文输入也是这样的原理。<br>当然,windows由于其消息机制多采用“主动申请”模式,所以能实现当目标窗口没有输入焦点时<br>不能激活中文输入的选字窗口(如浏览某些网页时),以上方案不能实现此功能。<br><br><br>