ATL中的多继承模板类,不是为了同类功能的扩展,而是为了某类功能的添加。
来源:互联网 发布:软件培训要好多钱 编辑:程序博客网 时间:2024/06/06 00:28
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>
{
- ATL中的多继承模板类,不是为了同类功能的扩展,而是为了某类功能的添加。
- 坚强而不做作的生活,不是为了任何人,而是为了活出精彩的自己!
- 为了使这个Bloger功能不是特别的冷清,发个文章占一下space
- WebUI组件的设计目标:不是功能齐全,而是结构合理易于扩展、体积小巧
- 工作不是为了生气的
- 诸葛亮北伐的目的根本不是为了灭魏,而是一统三秦
- C++编程规范之37:公用继承即可替换性。继承,不是为了重用,而是为了被重用
- 多线程不是为了提高效率,而是不必等待
- 为了用户信息安全,屏蔽浏览器的记住密码功能
- 开发了一个纯粹为了比赛的机器人功能
- 软件不是为了高深的概念
- 如果说做的目的不是为了吃
- 扩展已知类的功能
- 通过继承扩展子类的功能
- 测试不是为了找出所有BUG,而是为了满足用户需求
- 努力和上进不是为了做给别人看,而是为了不辜负自己
- 努力和上进不是为了做给别人看,而是为了不辜负自己
- 外观类??为了代码的安全调用
- 防止SQL注入攻击
- Android GradientDrawable类的详解,设置activity的背景颜色渐变效果
- C++获取扩展名匹配扩展名
- HDU 4763 Theme Section
- ExtJs资料收集
- ATL中的多继承模板类,不是为了同类功能的扩展,而是为了某类功能的添加。
- poj 1002 487-3279
- C++库研究笔记——#if #elif 的错误使用
- 逆序数递归算法
- qsort
- FreeMaker教程
- 在O(n)时间复杂度O(1)空间复杂度求一个数组中出现多次和未出现的数字
- 8招让你更沉稳
- nginx图片缓存