COM逐步教程
2006-07-22 22:54:38 来源:WEB开发网第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; //管理引用计数
};
///////////////////////////////////////////////////////////
更多精彩
赞助商链接