WEB开发网
开发学院软件开发VC COM逐步教程 阅读

COM逐步教程

 2006-07-22 22:54:38 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 介绍对于我来说,理解COM(Component Object Model,COM逐步教程,组件对象模型)绝不亚于一次长途旅行,我相信,然后键入以下内容,将它保存为IAdd.idl,每一个想要理解COM之后基本原理的程序员都必须使用普通的C++编写至少一个简单的COM对象,也就是说

本文示例源代码或素材下载

介绍

对于我来说,理解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;
   }

1 2 3 4 5 6  下一页

Tags:COM 逐步 教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接