现在的位置: 首页 > 综合 > 正文

ATL中的多继承模板类,不是为了同类功能的扩展,而是为了某类功能的添加。

2013年12月08日 ⁄ 综合 ⁄ 共 1184字 ⁄ 字号 评论关闭

ATL中的多继承模板类,不是为了同类功能的扩展,而是为了某类功能的添加。

这些模板类具有某方面的通用功能,通过修改参数<CA5>来具体化实现类 - public CComCoClass<CA5, &CLSID_A5>。

这样CA5通过继承不同种类的具体化实现类,来扩展不通的功能。

 

这样就可以集中精力在开发类(CA5)的基本逻辑上,在完成了类(CA5)的实现后,通过继承不同模板类的生成具体的类,就可以快速实现COM的功能。

 

ATL是ActiveX template library的缩写,它是一套C++模板库。

ATL的核心就是由几十个不同功能的模板类构成的。通过多继承来不断组合这些功能类,来扩展程序功能。

// CA5
class ATL_NO_VTABLE CA5 :
 public CComObjectRootEx<CComSingleThreadModel>,                                             // 增加对不同线程方式的支持
 public IDispatchImpl<IA5, &IID_IA5, &LIBID_ALib, /*wMajor =*/ 1, /*wMinor =*/ 0>,  // 增加脚本支持
 public IOleControlImpl<CA5>,
 public IOleObjectImpl<CA5>,
 public IOleInPlaceActiveObjectImpl<CA5>,
 public IViewObjectExImpl<CA5>,
 public IOleInPlaceObjectWindowlessImpl<CA5>,
 public ISupportErrorInfo,
 public IConnectionPointContainerImpl<CA5>,                                                               // 增加连接容器功能
 public CProxy_IA5Events<CA5>,                             // 增加连接点功能,负责Fire_
 public IQuickActivateImpl<CA5>,
#ifndef _WIN32_WCE
 public IDataObjectImpl<CA5>,
#endif
 public IProvideClassInfo2Impl<&CLSID_A5, &__uuidof(_IA5Events), &LIBID_ALib>,
 public CComCoClass<CA5, &CLSID_A5>,                                                                   // 可创建
 public CComControl<CA5>
{

抱歉!评论已关闭.