WEB开发网
开发学院软件开发VC 编写可复用性更好的C++代码:Band对象和COMToys(2)... 阅读

编写可复用性更好的C++代码:Band对象和COMToys(2)

 2006-07-21 11:44:10 来源:WEB开发网   
核心提示:本文假设你熟悉C++,COM,编写可复用性更好的C++代码:Band对象和COMToys(2),IE,第二部分 BandObj的类层次和MyBands服务程序的注册BandObj的类层次结构阅读了第一部分内容以后,种类ID和资源ID,CBandObjFactory传递头两个参数到MFC,现在你应该有点明白如何用Band

本文假设你熟悉C++,COM,IE。

第二部分 BandObj的类层次和MyBands服务程序的注册

BandObj的类层次结构

阅读了第一部分内容以后,现在你应该有点明白如何用BandObj来编写band对象了(定义一个GUID,然后调用AddBandClass),下面我们进一步深入BandObj,揭示其工作原理。从BandObj中我们可以看到它涉及三个类:CBandObjDll, CBandObjFactory, 和 CBandObj,这三个类与MFC之间的关系如图五所示:

图五

CBandObjFactory是创建CBandObj对象的类工厂。通常不必直接使用这个类。当你从InitInstance函数中调用AddBandClass时,CBandObjDll将创建一个新的类工厂,并将这个类工厂添加到一个列表中:

BOOL CBandObjDll::AddBandClass(...)
{
  CBandObjFactory* pFact =
   OnCreateFactory(...);
  pFact->m_pNextBandFact =
   m_pBandFactories;
  m_pBandFactories = pFact;
  return TRUE;
}
OnCreateFactory 是一个虚函数,仅仅返回一个新的类工厂。
CBandObjFactory* CBandObjDll::OnCreateFactory(...)
{
  return new CBandObjFactory(...);
}

我在这里提供OnCreateFactory的目的是一旦你想要派生自己专用的工厂类的话,就可以从CBandObjFactory派生并重载OnCreateFactory,让BandObj使用它。为清晰起见,我省略了参数,这里的参数与传递到AddBandClass的参数一样:类ID,MFC运行时类,种类ID和资源ID。CBandObjFactory传递头两个参数到MFC,后两个参数是自己用的。

1 2 3 4 5  下一页

Tags:编写 复用 更好

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