输入法编程总结

1.操作系统使用ImeProcessKey查看你输入法有没有对当前按键做处理(写ImeProcessKey时处理返回true,没处理返回FALSE),如果返回true,则操作系统会调用ImeToAsciiEx,所以真正对按键的处理可以放在ImeToAsciiiEx中

2.

操作系统调用ImeToAsciiEx提供一块内存,IME在这个函数中产生消息,消息便可以放在这个内存中

3.ImeProcessKey,操作系统首先把按键信息发给本IME,IME判断自己是否要处理该按键,如处理则作出相应处理并返回TRUE,否则,返回FALSE,并产生一个WM_IME_NOTIFY消息给应用程序

4.所谓application指的是IME?

5.WM_IME_*消息都是发给自己的,msdn里也称他们为UI Window Messages ,也就是说它们是发给输入法UIwindow的消息,自然需要UIwindow处理

6.在2001版msdn中搜索INDICATOR_CLASS

7.所有的Ime引出函数由imm调用

8.实质上,输入法窗口就跟静态控件一样,本身并无法接收输入,它完全是靠发送给它的消息显示用户的输入内容的. As with static controls, the IME class window does not respond to user input by itself, but receives various types of control messages to realize the entire user interface of the IME.

9.改变IMC的内容只能通过调用IMM的函数实现

10.举例,如果要改变输入法的全半角,这个实现实际上是改变IMC的内容,然后IMM再把IMC的内容通过WM_IME_NOTIFY消息传给输入法

11.输入窗口的字体位置什么的通过IMC提供

12.打开客户程序,点到某个输入框的时候,此时操作系统会自动把输入上下文信息存到IMC里面以供输入法使用

13.When a window of the application is getting focused, the system gives the Input Context to this window and sets the current Input Context to the UI window. The system then sends a WM_IME_SETCONTEXT message with the handle of its Input Context to the application. The application then passes this message to the UI window.

14.从MakeResultString看,输入的字母都在IMC的compStr里面存着,而不是输入法本身存着

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值