这门课解决什么工作场景
ATL(Active Template Library)是Windows平台下用于开发COM组件的轻量级C++模板库。这门基础篇不教界面开发,也不讲网络通信,而是直奔COM组件的底层运作机制。它解决的是那些必须直面组件接口、对象生命周期、跨模块调用的开发场景。比如你需要维护历史遗留的ActiveX控件、为旧系统编写COM插件、或者在做Windows外壳扩展、DirectShow滤镜开发时,遇到对象无法正确创建、接口查询失败、多线程下组件访问崩溃等问题。很多上层框架把这些细节封装得很好,但一旦遇到底层报错或者需要自己从零实现一个轻量级组件,绕不开的依然是IUnknown和IDispatch。这门课就是帮你把这些底层的硬骨头啃下来,让你在处理Windows组件级开发时不再只能靠盲猜。
适合什么基础与学习建议
这门资料不适合零基础。它默认你已经熟练掌握C++的类、虚函数、模板,并且对Windows下的动态链接库机制有基本概念。如果你连纯虚函数和多重继承的内存布局都还没理清,建议先补齐C++对象模型再来看。对于符合基础要求的读者,建议按以下顺序配合资料练习:第一,先集中精力看前三块关于IUnknown接口的内容。不要急着敲代码,重点理解QueryInterface在多接口查询时的身份判定规则,以及AddRef和Release在不同调用场景下的配对原则。第二,在理解了基本接口后,直接看IDispatch接口的实现那一块。这是自动化编程的核心,自己动手写一个支持Late Binding的简单对象,用脚本语言去调用它,能极大加深对虚表和分发表区别的理解。第三,关于全局变量和类工厂的部分,建议对照着ATL源码边看边查。不要只听讲解,要在本地环境里单步调试,观察对象创建时的堆栈变化,看清楚CComCreator是如何一步步把类实例化出来的。
学完能独立做什么
把基础篇的内容消化透,你就能独立完成一个标准COM组件的编写,并且能保证它在多线程环境下正确运行。具体来说,你能用模板类实现组件的聚合(Aggregate),把多个对象的功能合并对外暴露;能自己实现IDispatch接口,让不支持直接读取虚函数表的脚本宿主正确调用你的方法;能看懂并使用ATL提供的创建器(Creator)机制,明白对象创建背后的引用计数和模块全局状态管理。更重要的是,以后在排查组件加载失败、接口返回空指针、多线程下调用崩溃等疑难杂症时,你有了从底层机制出发的分析能力,而不是只能去网上搜报错信息碰运气。对于日常维护老旧系统或做底层接口对接的开发者,这门资料是一块非常实用的垫脚石。
课程目录
课程目录24 集
- 1-1 [ATL基础篇] COM组件的IUnknown接口 (49:27).mp4
- 1-2 [ATL基础篇] ALT与关键区 (55:31).mp4
- 1-3 [ATL基础篇] IUnknown接口的QueryInterface函数 (43:53).mp4
- 1-4 [ATL基础篇] IDispatch接口的实现 (52:16).mp4
- 1-5 [ATL基础篇] _pAtlModule和_AtlBaseModule全局变量 (01:07:00).mp4
- 1-6 [ATL基础篇] 类的实例化类模板 (54:47).mp4
- 1-7 [ATL基础篇] Aggregate (34:30).mp4
- 1-8 [ATL基础篇] Creator (50:48).mp4
- 1-9 [ATL基础篇] CComCreator在ATL中的应用 (34:50).mp4
- 1-10 [ATL基础篇] Debug宏 (26:05).mp4
- 1-11 [ATL基础篇] CComCoClass类 (40:04).mp4
- 1-12 [ATL基础篇] 前面课程的一个总结 (56:12).mp4
- 1-13 [ATL基础篇] 一个COM组件的服务应该具备的功能 (55:02).mp4
- 1-14 [ATL基础篇] ATL所具备的注册表修改功能 (37:06).mp4
- 1-15 [ATL基础篇] 一种奇特的创建数组的方法 (51:19).mp4
- 1-16 [ATL基础篇] ATL服务功能的实现 (01:20:51).mp4
- 1-17 [ATL基础篇] ATL服务功能相关杂项 (01:00:13).mp4
- 1-18 [ATL基础篇] 添加接口 (46:37).mp4
- 1-19 [ATL基础篇] 新的一种实现同名函数的办法 (16:17).mp4
- 1-20 [ATL基础篇] AtlInterQueryInterface函数 (10:13).mp4
- 1-21 [ATL基础篇] TearOff技术如何在ATL中实现 (42:10).mp4
- 1-22 [ATL基础篇] TearOff技术如何在ATL中实现(Cache) (30:39).mp4
- 1-23 [ATL基础篇] Aggreagate技术的容器类的实现方法 (42:28).mp4
- 1-24 [ATL基础篇] 接口映射链 (29:18).mp4






