手机版

COM编程入门(21)

发布时间:2021-06-06   来源:未知    
字号:

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文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)