您的位置:首页 > 其它

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

2013-09-29 02:18 295 查看
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>

{
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐