COM编程入门(21)

时间:2025-04-11

COM编程入门,十分浅显易懂

};

class __declspec(uuid("{7D51904E-1645-4a8c-BDE0-0F4A44FC38C4}")) CSimpleMsgBoxImpl;

当某一客户端想要创建一个SimpleMsgBox COM对象时,它应该用下面这样的代码:

ISimpleMsgBox* pIMsgBox;

HRESULT hr;

// 组件对象类的CLSID

hr = CoCreateInstance ( __uuidof(CSimpleMsgBoxImpl),

NULL, // 非聚合

CLSCTX_INPROC_SERVER, // 进程内服务器

__uuidof(ISimpleMsgBox), // 所请求接口的IID

(void**) &pIMsgBox ); // 返回的接口指针的地址

类工厂实现

我们的类工厂SimpleMsgBox是在一个叫做CSimpleMsgBoxClassFactory的C++类中实现的:

class CSimpleMsgBoxClassFactory : public IClassFactory

{

public:

CSimpleMsgBoxClassFactory();

virtual ~CSimpleMsgBoxClassFactory();

// IUnknown方法

ULONG AddRef();

ULONG Release();

HRESULT QueryInterface( REFIID riid, void** ppv );

// IClassFactory方法

HRESULT CreateInstance( IUnknown* pUnkOuter, REFIID riid, void** ppv );

HRESULT LockServer( BOOL fLock );

protected:

ULONG m_uRefCount;

};

构造函数、析构函数和IUnknown方法都和前面例子中的一样,不同的只有IClassFactory的方法,LockServer(),看起来相当更简单:

HRESULT CSimpleMsgBoxClassFactory::LockServer ( BOOL fLock )

{

fLock ? g_uDllLockCount++ : g_uDllLockCount--;

COM编程入门(21).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219