VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
COM 对象 和 接口

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

COM Objects and Interfaces

 

一个对象实现一个接口,他的意思就是该对象使用代码实现了接口的每个方法

并且为这些函数通向com库提供了com的二进制指针。然后com使这些函数运行在

请求了一个指向该接口的任何客户端。

 

Interfaces and Interface Implementations

 

COM 在接口的定义和实现上有根本的差别。一个接口实际上是由一组定义了用法的相

联系的函数原型组成,只是他不能够被实现。这些函数原型就相当于C++中含有纯虚拟函数的基类。一个接口定义制定了接口的成员函数、调用方法、返回类型、他们的参数的数量和类型,这些函数要干什么。但是这里并没有与接口实现相关的东西。一个接口的实现就是程序员在一个借口定义上提供的执行相关动作的代码。

    一个接口的实现就是程序员在一个借口定义上提供的执行相关动作的代码。客户调用完全是决定于接口的定义。

 

Interface Pointers and Interfaces

 

接口实现的一个实例,实际上就是一个指向一组方法的指针,即是指指向一个接口的函数表,该函数表引用了该接口所有方法的实现。

    每个接口,是一个固定的一组方法的集合,在运行时通过globally unique interface identifier (IID) 来定位。这里,IIDcom支持的globally unique identifier (GUID)的特殊的实例。这样做就不会产生单一系统上相同名字、接口的多个版本的COM之间的冲突了。

  • 一个COM接口与C++类是不一样的;
  • 一个COM接口不是一个对象——他只是简单的关联一组函数,是客户和程序之间通信的二进制标准。只要他提供了指向借口方法的指针,这个对象就可以用任何语言来实现他。;
  • COM接口十强类型的——每个接口有他自己的借口标识符;

·         COM接口的不变性——你不能够用老版本的接口标识符定义新的版本,接口的IID定义的接口合同是明确的、唯一的

 

IUnknown and Interface Inheritance

 

    继承在COM 里并不意味着代码的重用。因为接口没有实现关联,借口继承并意味着代码继承。他的意思仅仅是,一个接口同一个合同关联,就像C++的纯虚拟基类的创建和修改样,可以添加方法或者更进一步的加强方法的使用。在COM里没有选择性继承。如果一个接口由另一个接口继承的话,他就包含了另一个接口定义的所有的方法。

 

Using and Implementing IUnknown

 

    COM 为实现和使用对象和对象的内部通信提供了一个丰富的标准集合。对IUnknown接口的实现和使用的细节,请参见下面主题:QueryInterface: Navigating in an Object。 

   

Rules for Implementing QueryInterface

 

管理实现一个COM对象的IUnknown::QueryInterface方法的三个主要规则:

    1.对象必须要有一个标识符; 

    2.一个对象实例的接口集合必须是静态的(static); 

    3.在对象中从任何一个其他的接口查询此接口都应该成功。 

 

通过引用计数来管理对象的生命周期

    使用 AddRef()    //增加引用

         Realase()   //减少引用




相关文章

相关软件