WEB开发网
开发学院软件开发VC COM编程入门:深入COM服务器 阅读

COM编程入门:深入COM服务器

 2006-07-21 11:44:59 来源:WEB开发网   
核心提示: 类工厂实现我们的类工厂SimpleMsgBox是在一个叫做CSimpleMsgBoxClassFactory的C++类中实现的:class CSimpleMsgBoxClassFactory : public IClassFactory{public:CSimpleMsgBoxClassF

类工厂实现

我们的类工厂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--;
  return S_OK;
}

CreateInstance()是重点。我们说过这个方法负责创建新的CSimpleMsgBoxImpl对象。让我们进一步探讨一下它的原型和参数:

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

第一个参数pUnkOuter只用于聚合的新对象,指向“外部的”COM对象,也就是说,这个“外部”对象将包含此新对象。对象的聚合超出了本文的讨论范围,本文的例子对象也不支持聚合。

上一页  4 5 6 7 8 9 10  下一页

Tags:COM 编程 入门

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