MFC对COM接口编写的支持分析

类别:VC语言 点击:0 评论:0 推荐:
MFC对COM的支持分析 FMD STUDIO 之 VC++编程 之 技术篇 之 : 【回上一页】 编号 主  题 来 源 收录时间 4 MFC对COM接口编写的支持分析 自撰 00.05.08

MFC对COM的支持分析

MFC采用C++中嵌套类定义的方法实现COM接口。

为了简化其中的编写。又采用了大量的宏定义。

以下将从嵌套类实现的原始写法开始,分析MFC中对COM的支持

一、COM概述

1.COM提供了一种简洁的二进制对象使用方法。为了符合COM规范。用VC++编写的对象(类) 代码必须在编译后,能按照COM规范的格式提供"接口"。

2.关于接口,接口是一个指针,指针指向一个表格,表格内包含了能操作对象的一组函数的指针。

3.C++类定义结构对接口的支持。

为了支持多态,包含虚拟函数的C++对象都将包含一个指向虚函数表的指针,这种结构符合COM接口规范。

而操作同一对象的接口可以有多个。C++类定义中,可以用两种方案实现多个接口。

一种是多继承结构,一个类从多个接口类派生。

另一种是嵌套类定义结构。

ATL采用前者,MFC采用后者。

4.除了规范调用方法外,COM还规范了对象的建立、生存期等。

每个COM对象对应还有一个"类厂"对象,类厂对象中包含CreateInstance(..)成员,负责对象的建立,建立后,接口才有使用的可能。

而包含COM对象的组件(DLL)中,应包含一个DllGetClassObject出口函数,此函数供系统的COM库调用,在DllGetClassObject中,类厂被建立,类厂接口返回给系统COM库。

COM库根据类厂接口,调用CreateInstance建立COM对象,返回接口给用户。用户使用接口调用接口成员操作对象。

5.总结

DLL项目中要提供COM对象,需要用C++类的形式定义对象的属性和行为,但此类对用户是不可见的,用户通过接口操作类对象,因此,类的构造过程中,需要提供合适的接口,提供给用户。

为了和系统的COM库相,配合,DLL应该提供规定的几个输出函数。并提供指定对象的类厂,以及类厂中对象的建立等。

二、用C++类嵌套定义的结构提供类接口。

如果一个类定义包含一组虚函数,则其对象在内存中结构符合接口结构。

故在整个对象的封装类中,嵌套定义几个包含特定虚拟函数组合的类,以及嵌套类成员。

嵌套类的结构设置成欲提供接口的结构。(派生自I...)

例:

1.定义部分:

①接口结构的定义(虚函数组合)

class

本文地址:http://com.8s8s.com/it/it3551.htm