欢迎来到天天文库
浏览记录
ID:59135613
大小:91.50 KB
页数:5页
时间:2020-09-12
《组件对象模型.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ComponentObjectModel(COM——组件对象模型)组件对象模型,一种面向对象的编程模式。它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。英文为ComponentObjectModel,缩写COM,是微软对于网页服务器与客户端、增益集与Office系列软件之间交互的一项软件组件技术。简单的说组件对象模型(COM)是一种开发应用程序接口的标准。COM把软件应用分成了两大部分:COM服务器和COM客户。具有符合COM标准的接口软件叫做组件。组件类,组件对象,组件服务器由一个或多个抽象
2、类派生出来,并实现了抽象基类的各个纯虚函数的类叫COM类,或组件类。组件类的实例,叫做组件对象或COM对象。含有一个或多个组件类的DLL或EXE叫做COM服务器或组件,当然也可以这样说,可以提供一个或多个组件对象的DLL和EXE叫做COM服务器或组件。在COM技术中使用注册表存储关于组件的信息。客户可以再注册表中搜索它需要的组件。组件吧标识,存放位置等信息登记到系统的注册表中,即得进行注册。COM规定的标准服务COM规定,一个功能完善的组件至少应该有IUnknown,IClassFactory和IDisp
3、atch三个接口(作为约定,COM中所有接口名称都以字母“I”开头)。IUnknown为提供基本服务接口,组件上的其余接口都由IUnknown派生。客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。所有的COM接口都继承了IUnknown,每个接口的vtbl中的前三个函数都是QueryInterface、AddRef、Release。这样所有COM接口都可以被当成IUnknown接口来处理。1.ClassIUnknown 2.
4、 { 3. public: 4. 5. virtual HRESULT _stdcall QueryInterface( 6. ConstIID& iid, void * *ppv) = 0; 7. 8. virtual ULONG _stdcall AddRef( void) = 0; 9. 10. v
5、irtual ULONG _stdcall Release( void) = 0; 11. 12. }; IUnknown定义了接口查询函数 QueryInterface()HRESULT QueryInterface(constIID& iid,//需要查询接口的IDvoid** ppv//查询后得到的接口指针);参数:iid[in]指明需要查询的接口的IID.ppvObject[out]按第一个参数查询后得到的接口指针,该指针指向了这个接口的虚函数表,而在这个虚函数表中存放
6、的就是该接口中函数的指针IUnknown中AddRef、Release函数是用来控制组件对象生存周期。组件对象内设置了一个计数器,当客户程序在引用组件对象时,客户就调用AddRef()把计数器的值加1;当客户不再引用该组件对象时,客户调用Release,计数器减1.类工厂接口IClassFactory调度接口IDispatch使用ATL设计组件鼠标右键点击工作区间的IFirst,选择AddMethod方法输入名称:AddNumbers输入参数:[in]longNum1,[in]longNum2,[out]
7、long*ReturnVal实现接口函数。
此文档下载收益归作者所有