COM、OLE和ActiveX学习(一):COM

本文介绍了COM的基本概念,包括COM对象、IUnknown接口、接口标识、对象生存期管理以及如何实例化COM对象。同时,讨论了MFC如何支持COM,包括多重继承和嵌套类的应用,以及在MFC中实现COM接口的方式,如聚合COM对象的机制。
摘要由CSDN通过智能技术生成
研读了《MFC Windows程序设计》第十八章之后,对其中内容进行了简单的整理摘抄:

一、COM
1、COM的概念
COM:Component Object Model 组件对象模型
COM是一种方法,用于创建独立于任何编程语言的对象
COM对象具有“方法”,“方法”被分别组织在“接口”中,并通过“接口指针”调用它们

每一种COM对象都实现了一个名为IUnknown的接口,IUnknown包含三种方法,分别为
1)QueryInterface 返回指向另一个接口的指针
2)AddRef 增加对象的引用计数
3)Release 减小对象的引用计数

若有另外三个方法:Add、Substract和CheckSpelling
则应将Add和Substact分配给接口IMath,将CheckSpelling分配给接口ISpelling
因此这个COM有三个接口: IUnknown、 IMath和 ISpelling

每个接口都有“接口标识”(IID)唯一标识,IID是一个128位的值,即使有相同的接口名称,但是接口标识不同。

2、实例化COM对象
COM类也由128位的值标识,标识类的GUID成为“类ID”(CLSID)
激活函数: CoCreateInstance —— 接受一个CLSID并返回指向对象的接口指针
     IMath* pMath;
     CoCreateInstance(CLSID_Object, NULL, CLSCTX_SERVER, IID_IMath, (void **)&pMath);
CoCreateInstance首先要实例化对象的类对象,再请求类对象去创建对象

大多数类对象都实现了一个特殊的COM接口IClassFactory(或 IClassFactory 2 ),可调用 IClassFactory::CreateInstance来创建对象实例

3、对象生存期
通过AddRef增加m_lRef,Release递减 m_lRef࿰
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值