



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/=/TITLE:/ 漫谈WinCE输入法的编写(一)/AUTHOR:/ norains/DATE:/ Saturday 10-February -2007/Environment:/ EVC4.0 + Standard SDK/= WinCE的输入法编写,说复杂也不复杂,说简单亦不简单.说复杂嘛,是因为输入法是一个COM,需要实现某些接口,并且由于其特殊性,不能像普通应用程序一样进行调试;说简单嘛,只要把层次搞清,剩下的就和普通应用程序没什么太多的区别. 我觉得如果光谈概念,以我的文字功底,让人明白内中的机理,估计不是一件非常容易的事情.所以,我还是实际点,以我写过的一个输入法来做为例子. 因为这篇文章不是专门介绍COM接口技术的原理,我们的目的仅仅是让输入法给跑起来,因此我们只需要了解输入法用到了什么接口,以及我们应该如何定义该接口的功能即可. 为了代码层次分明,我这个例子采用了三个类:CClassFactory,CInputMethod和CIMWnd.前面两个类分别继承于IClassFactory和IInputMethod,是能让系统正常调用输入法所必须的com接口;而CIMWnd则是输入法的窗口,和普通的应用程序无异. 这三个类的关系是CClassFactory通过自身的CreateInstance()函数来创建一个CInputMethod类的对象,然后CInputMethod类中会调用CIMWnd类来显示一个输入法窗口.以图片的形式来说,三者的关系如下: 现在就让我们来看看CClassFactory类的声明:classCClassFactory:publicIClassFactorypublic:CClassFactory(long*plDllCnt,HINSTANCEhInst);virtualCClassFactory();/IUnknownmethodsSTDMETHODIMPQueryInterface(THIS_REFIIDriid,LPVOID*ppv);STDMETHODIMP_(ULONG)AddRef(THIS);STDMETHODIMP_(ULONG)Release(THIS);/IClassFactorymethodsSTDMETHODIMPCreateInstance(LPUNKNOWNpUnkOuter,REFIIDriid,LPVOID*ppv);STDMETHODIMPLockServer(BOOLfLock);private:long*m_plDllCnt;/pointtotheGlobalDLLreferencecountlongm_lRef;HINSTANCEm_hInst; IUnknown标准接口: QueryInterface:该函数用来查看对象支持哪种方法,这也是COM接口最先调用的函数. AddRef:增加一次对象调用计数. Release:减少一次对象调用计数. IClassFactory特有的接口: CreateInstance:系统调用该函数去创建另一个所需的实例.本文的例子中,这个函数体内创建了一个CInputMethod类的对象. LockServer:用来标识该DLL是否被卸载.本文中,只有检测到m_plDllCnt变量为0值,也就是说该DLL已经没有被引用,此时管理器才会卸载该DLL. 接下来就让我们再来看看CInputMethod类:classCInputMethod:publicIInputMethodpublic:/IUnknownmethodsSTDMETHODIMP_(ULONG)Release(THIS);STDMETHODIMP_(ULONG)AddRef(THIS);STDMETHODIMPQueryInterface(THIS_REFIIDriid,LPVOID*ppv);/IInputMethodHRESULTSTDMETHODCALLTYPESetImData(DWORDdwSize,void*pvImData);HRESULTSTDMETHODCALLTYPEGetImData(DWORDdwSize,void*pvImData);HRESULTSTDMETHODCALLTYPERegisterCallback(IIMCallback*pIMCallback);HRESULTSTDMETHODCALLTYPEReceiveSipInfo(SIPINFO*psi);HRESULTSTDMETHODCALLTYPEGetInfo(IMINFO*pimi);HRESULTSTDMETHODCALLTYPEHiding();HRESULTSTDMETHODCALLTYPEShowing();HRESULTSTDMETHODCALLTYPEDeselect();HRESULTSTDMETHODCALLTYPESelect(HWNDhWndSip);HRESULTSTDMETHODCALLTYPEUserOptionsDlg(HWNDhwndParent);CInputMethod(long*plDllCnt,HINSTANCEhInst);virtualCInputMethod();protected:CIMWnd*m_pIMWnd;/TheinputmethodwindowpointerHINSTANCEm_hInst;/Thedllinstancelong*m_plDllCnt;/pointtotheGlobalDLLreferencecountlongm_lRef; CInputMethod的IUnknown标准接口的作用和CClassFactory相同,在此就不赘述. IInputMethod特有接口: SetImData:应用程序可以通过该接口来获取输入法(IM)的信息. GetImData:传递特定的信息给输入法. RegisterCallback:SIP提供给输入法的回调函数接口.通过该回调函数接口,输入法可以给调用输入法的应用程序发送字符或键盘信息等等.这个是比较重要的一个函数,输入法就是通过该函数传递过来的接口函数来建立和外部的联系. ReceiveSipInfo:SIP通过该接口传递消息给输入法. GetInfo:SIP通过该接口来获取输入法的信息. Hiding:隐藏输入法. Showing:显示输入法. Deselect:输入法即将从内存中卸载的时候将调用该接口. Select:输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东省深圳市南山区深圳湾学校中考数学三模试卷(含答案)
- 南阳招教试题及答案
- 计算机软考试题及答案
- 儿童喜欢的题目及答案
- 批复安全培训中心课件
- 医院医保工作管理工作计划
- 2025年杭州物理高考试卷及答案
- 2025年医院行政干事考试题及答案
- 2025年语文诗词考试题型及答案
- 2025年北京二建考试试题及答案
- 2025-2026学年湘美版(2024)小学美术三年级上册《创意钟表》教学设计
- 2025交通行业工会改革计划
- 2022民用建筑暖通空调设计技术措施
- 高校新生开学动员大会教师代表发言稿范文
- 技术研发项目进度报告及问题反馈表
- 2025年心内科重症病房CCU临床带教资选拔理论试题(附答案)
- 秦兵马俑的课件教学
- 边境电子围栏2025年行业应用前景报告中小企业安全市场拓展
- 【英语】江苏省苏锡常镇2025届高三下学期二模试题(解析版)
- 2024年德州禹城市事业单位引进青年人才真题
- DBJT15-110-2015 广东省建筑防火及消防设施检测技术规程
评论
0/150
提交评论