译序 1
ATL 之深入解析 1
英文版原序 1
前言 1
第1章 你好,ATL 1
1.1 什么是ATL? 1
1.2 创建 COM 服务器 2
1.3 插入一个 COM 类 4
1.4 加入属性和方法 9
1.5 实现其他接口 12
1.6 支持脚本 14
1.7 添加永久性 16
1.8 添加和激发事件 18
1.9 使用窗口 22
1.10 实现组件类别 25
1.11 添加用户界面 26
1.12 容纳控制 28
1.13 总结 30
第2章 ATL 智能类型 31
2.1 字符串数据类型、转换宏和辅助函数 31
2.2 COM 字符串数据类型--BSTR 40
2.3 CComBSTR 类 41
2.4 智能 VARIANT 类 ComVariant 56
2.5 CComPtr、CComQIPtr 和CComDispatchDriver 智能指针类 69
2.6 总结 85
3.1 回顾 COM 套间 86
第3章 ATL 中的对象 86
3.2 ATL 的层次 90
3.3 线程模型支持 91
3.4 IUnknown 的核心 99
3.5 我们的类 106
3.6 CComObject 及其他 113
3.7 ATL 创建者 127
3.8 调试 141
3.9 总结 147
第4章 COM 服务器 149
4.1 回顾 COM 服务器 149
4.2 对象映射表和 CComModule 类 151
4.3 对象映射表 152
4.4 对象映射类要求的方法 154
4.5 CComModule 类 188
4.6 重游 CComCoClass 196
4.7 服务器优化编译选项 199
4.8 总结 200
第5章 接口映射表 202
5.1 回顾:COM 的实体身份 202
5.2 表驱动的 QueryInterface 204
5.3 多重继承 211
5.4 tear-off 接口 222
5.5 聚合:外部控制对象 231
5.6 接口映射表的技巧 239
5.7 总结 247
6.1 回顾 COM 的永久性 248
第6章 ATL 中的永久性 248
6.2 ATL 永久实现类 258
6.3 属性映射表 259
6.4 永久实现 261
6.5 其他永久实现 275
6.6 使用永久功能加入“按值列集”的语义 285
6.7 总结 289
第7章 集合和枚举器 290
7.1 COM 集合和枚举接口 290
7.2 枚举数组 303
7.3 枚举 STL 集合 313
7.4 集合 325
7.5 ATL 数据类型的 STL 集合 331
7.6 简单集合 337
7.7 对象模型 339
7.1 总结 346
第8章 连接点 347
8.1 回顾连接点 347
8.2 创建基于 ATL 的可连接对象 351
8.3 创建一个接收事件的对象 363
8.4 这一切是如何工作的:零散的实现细节 375
8.5 总结 393
第9章 窗口 394
9.1 Windows 应用程序的结构 394
9.2 CWindow 397
9.3 CWindowlmpl 403
9.4 CDialoglmpl 440
9.5 Windows 控制包装类 450
9.6 CContainedWindow 456
9.7 总结 463
第10章 ActiveX控制 464
10.1 回顾 ActiveX 控制 464
10.2 BullsEye 控制的需求 466
10.3 利用 ATL 向导创建初始的控制 473
10.4 初始的 BullsEye 源文件 478
10.5 循序渐进地开发 BullsEye 控制 483
10.6 总结 525
第11章 控制包容 526
11.1 控制是如何被包含的 526
11.2 基本的控制容器 527
11.3 在对话框中容纳一个控制 561
11.4 复合控制 568
11.5 HTML 控制 572
11.6 ATL 控制包容的局限 585
11.7 总结 585
附录A 用例子解析 C++模板 587
A.1 对模板的需求 587
A.2 模板基础 589
A.3 另一种多态性 592
A.4 函数模板 597
A.5 成员函数模板 598
A.6 总结 599
附录B ATL 类和头文件 600