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

COM逐步教程

 2006-07-22 22:54:38 来源:WEB开发网   
核心提示: 第2步:使用命令行编译器MIDL.exe(注意:midl.exe随VC++一同附带,并且可能会包括一些对于midl的路径问题,COM逐步教程(2),你可能需要修改你的路径变量设置)来编译文件IAdd.idl,经过编译,它亦是一个抽象基类,因此,会生成以下文件:IAdd.h 包含C++风格的

第2步:

使用命令行编译器MIDL.exe(注意:midl.exe随VC++一同附带,并且可能会包括一些对于midl的路径问题,你可能需要修改你的路径变量设置)来编译文件IAdd.idl。

经过编译,会生成以下文件:

IAdd.h   包含C++风格的接口声明。

dlldata.c 包含了代理DLL的代码。用于在不同的进程或计算机上调用该对象的情况。

IAdd.tlb  二进制文件,描述了我们的IAdd接口以及它的所有方法。该文件可以被我们COM组件的所有客户端使用。

IAdd_p.c  包含了代理DLL的编组代码。用于在不同的进程或计算机上调用该对象的情况。

IAdd_i.c  包含了接口的IID。

第3步:

现在我们来创建这个COM对象。创建一个新文件(AddObj.h),声明一个C++类,将其命名为CAddObj,继承自接口IAdd(文件IAdd.h)。请记住,IAdd从IUnknown继承而来,它亦是一个抽象基类。因此,我们要和IUnknown一样为抽象基类IAdd声明所有的方法。

///////////////////////////////////////////////////////////
//
//AddObj.h
//包含了实现IAdd接口的C++类声明
//
#include  "IAdd.h"
extern long g_nComObjsInUse;
class CAddObj :
     public IAdd
   {
   public:
   //IUnknown接口
   HRESULT __stdcall QueryInterface(
                 REFIID riid ,
                 void **ppObj);
   ULONG  __stdcall AddRef();
   ULONG  __stdcall Release();
   //IAdd接口
   HRESULT __stdcall SetFirstNumber( long nX1);
   HRESULT __stdcall SetSecondNumber( long nX2);
   HRESULT __stdcall DoTheAddition( long *pBuffer);
   private:
   long m_nX1 , m_nX2; //加法的操作数
   long m_nRefCount;  //管理引用计数
   };
///////////////////////////////////////////////////////////

上一页  1 2 3 4 5 6 7  下一页

Tags:COM 逐步 教程

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