COM原理与应用(1)
原创
©著作权归作者所有:来自51CTO博客作者mo451583183的原创作品,请联系作者获取转载授权,否则将追究法律责任
COM
OLE—对象链接嵌入
COM-对象组件模型
1. 接口:
根据COM规范,所有的接口都必须从IUnknown派生,可以是直接派生,也可以使间接派生。OLE系统的接口,很多接口最后字母是2或Ex,表妹它是一个继承接口,如:IViewObject2从IViewObject继承过来。【P47】
Class IDictionary{
Virtual BOOL Initialize() = 0;
Virtual BOOL LoadLibrary(String) = 0;
Virtual BOOL InsertWord(String, String) = 0;
Virtual void DeleteWord(String) = 0;
Virtual BOOL LookupWord(String, String*) = 0;
Virtual BOOL RestoreLibrary(String) = 0;
Virtual BOOL FreeLibrary() = 0;
}
2. 接口描述语言IDL
Interface IDictionary
{
HRESULT Initialize();
HRESULT LoadLibrary([in]string);
HRESULT InsertWord([in]string,[in]string);
HRESULT DeleteWord([in]string);
HRESULT LookupWord([in]string,[outo]string*);
HRESULT RestoreLibrary([in]string);
HRESULT FreeLibrary();
}
可用功MIDL生成.h文件
3.接口的内存模式
每个成员函数的第一个参数是一个指向接口自身的this指针,this指针可以为我们提供COM对象的信息。C++的class可以以最简洁的方式描述COM接口。而且,用class描述接口隐藏了接口的虚函数表以及接口成员函数的this指针参数,使得接口的定义更易于理解。
多样化,MFC和ATL(活动模板库)分别采用了不同的机制来提供对COM接口的支持。【P46】
4.IUnknown接口—每个接口都必须从IUnknown继承过来,其原因在于IUnknown接口提供了两个非常重要的特性:生存期控制(“引用计数”)和接口查询(QueryInterface—完成接口之间的跳转)。
Class IUnknow
{
Public:
Virtual HRESULT _stdcall QueryInterface(const IID& iid, void **ppv) = 0;
Virtual ULONG _stdcall AddRef() = 0;
Virtual ULONG _stdcall Release() = 0;
};
上一篇:DAO基本登录(3)
下一篇:COM原理与应用(2)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
详解数仓对象设计中序列SEQUENCE原理与应用
本文介绍了SEQUENCE的使用场景和相关的函数的使用方法,并对使用SEQUENCE过程中遇到的常见问题及解决方法进行了汇总。
字段 数据库 序列号 SEQUENCE GaussDB(DWS) -
GNSS原理与应用-1
参考GNSS原理与应用(投稿自用)_哔哩哔哩_bilibili 课程内容 1、GPS卫星定位测量基
卫星导航 gps定位 数据处理 -
COM原理与实现之一
COM原理与实现之一COM组件其实是一种特殊的对象体系,遵循一个统一的标准,使到各个软件都可以通过某种方法访问
#define #include #endif -
COM 组件设计与应用(四)
一、前言 同志们、朋友们、各位领导,大家好。 VCKBASE 不得了, 网友众多文章好。
职场 休闲 COM 组件设计与应用(四)