1. 概述
Windows Mobile中的软输入面板(SIP)是一种用来支持用户自定义输入的机制。默认情况下,它主要包括标准键盘、块识别器和字母识别器。SIP作为一种COM对象,通过IInputMethod接口来实现自定义输入。但由于其特殊性,不能像普通应用程序一样进行调试,所以在编写过程中有点复杂。
为了代码层次分明,这里我对Mobile输入法的三个主要类:CClassFactory,CInputMethod和CIMWnd分别进行分析说明。前面两个类分别继承于IClassFactory和IInputMethod,是能让系统正常调用输入法所必须的com接口;而CIMWnd则是输入法的窗口,和普通的应用程序无异。
这三个类的关系是CClassFactory通过自身的CreateInstance()函数来创建一个CInputMethod类的对象,然后CInputMethod类中会调用CIMWnd类来显示一个输入法窗口。下面我已图片的方式列出三者关系:
Mobile 输入法要用到的相关API如下:
- Shell Reference
- IInputMethod Interface
- ATL
- COM
- Sequence of Events
2. 详细介绍
先来看看CClassFactory类的声明: