首页 > OOP语言 > VC++ > 正文

COM逐步教程
2011-04-25 00:00:00   来源:www.bianceng.cn   评论:0 点击:

暂时无描述信息

介绍

对于我来说,理解COM(Component Object Model,组件对象模型)绝不亚于 一次长途旅行。我相信,每一个想要理解COM之后基本原理的程序员都必须使用普通的C++编 写至少一个简单的COM对象,也就是说,不依靠MFC/ATL所提供的任何模板或宏的支持。在本 文中,我将要逐步介绍如何从基本原理出发来创建简单的COM对象。这些组件可用于VC/VB的 客户端程序。

作为练习,我们将要尝试设计一个COM组件,这一组件将要实现假想的 快速相加算法。它必须传入两个长数据类型的参数,并返回另一个长参数给用户,也就是相 加算法的结果。我们现在开始设计接口。

接口

COM对象的接口并不涉及到实际 的实现,但是它的方法则标志着COM对象中用来和外界通信的部分。我们将我们的接口命名为 IAdd,它的声明使用接口定义语言(Interface Definition Language,IDL)。IDL是用来定 义函数标志的语言,它独立于各种程序语言之间,这就使得RPC底层能够在不同的计算机之间 对参数进行打包、装载与解包。在我们的IAdd接口中,我们拥有SetFirstNumber和 SetSecondNumber方法,它们用来传递加法的参数。还有一个方法,DoTheAddition,它用来 完成加法并将结果回传给客户端。

第1步:

创建一个新的Win32 DLL工程(比 如说AddObj),我们将会在这个文件夹中创建接下来的所有文件。创建一个空文件,然后键 入以下内容。将它保存为IAdd.idl。接口的标识符可以使用工具uuidgen.exe来生成。

import "unknwn.idl";
[
object,
uuid (1221db62-f3d8-11d4-825d-00104b3646c0),
helpstring("interface IAdd is used for implementing a super-fast addition Algorithm")
]
interface IAdd : IUnknown
   {
   HRESULT   SetFirstNumber(long nX1);
   HRESULT   SetSecondNumber(long nX2);
   HRESULT   DoTheAddition([out,retval] long *pBuffer);
   };
[
uuid(3ff1aab8-f3d8-11d4-825d-00104b3646c0),
helpstring("Interfaces for Code Guru algorithm implementations .")
]
library CodeGuruMathLib
   {
   importlib("stdole32.tlb");
   importlib("stdole2.tlb");
   interface IAdd;
   }

相关热词搜索:

上一篇:如何使用MFC和类型库创建自动化项目
下一篇:指针专题

分享到: 收藏