第一部分 COM基础知识 1
第一章 COM对象 3
1.1 什么是COM 3
1.2 为什么要开发COM 4
1.3 COM还有什么用 4
1.4 COM如何工作 5
1.5 怎样用C++创建一个COM对象 6
1.6 怎样用C++与COM对象通信 10
1.7 怎样消灭COM对象 12
1.8 怎样用#import和智能指针创建COM对象 13
1.9 怎样用C++编写一个COM对象 14
1.11 怎样用MFC编写COM对象 19
1.10 直接使用C++编写COM对象 19
1.12 怎样用ATL编写COM对象 21
1.13 怎样用VB创建COM对象 21
1.14 怎样用VJ++创建COM对象 22
1.15 什么是服务控制器 22
1.16 小结 22
第二章 COM通信 23
2.1 COM对象如何通信 23
2.2 基本的IDL文件格式 24
2.3 简单参数类型 27
2.4 变量属性 28
2.5 数组 29
2.6 结构与COM类 30
2.7 封装联合 30
2.8 内存指针 31
2.9 VB参数类型 32
2.10 反向通信 33
2.11 连接点和接收器 33
2.12 ActiveX事件 38
2.13 小结 38
第三章 其他COM问题 40
3.1 封装和聚合 40
3.2 安全性 42
3.3 许可(Licensing) 45
3.4 多任务 46
3.5 小结 54
4.1 客户/服务器结构的发展 55
第四章 COM+ 55
4.2 COM的发展 57
4.3 DLL监管器 58
4.4 编写你自己的DLL监管程序 60
4.5 Microsoft事务服务器(MTS) 60
4.6 什么是COM+ 63
4.7 属性编程 71
4.8 构件目录 72
4.9 COM+和EJB 72
4.10 小结 73
第二部分 COM实例 75
第五章 创建和访问COM对象 77
5.1 例1使用C++和COM API创建COM对象 77
5.2 例2使用C++和智能指针创建COM对象 82
5.3 例3使用MFC和晚绑定创建COM对象 87
5.4 例4使用智能指针和晚绑定创建COM对象 91
5.5 例5使用MFC创建ActiveX控件 93
5.6 例6使用Visual Basic创建ActiveX控件 99
5.7 例7使用Visual Basic创建COM对象 100
5.8 例8使用Visual J++创建COM对象 101
第六章 使用MFC编写COM服务器 105
6.1 例9编写接口服务器工程 106
6.2 例10在MFC中编写COM DLL服务器 110
6.3 例11在MFC中编写COM EXE服务器 118
6.4 例12在MFC中编写支持晚绑定的COM服务器 119
6.5 例13在MFC中编写带连接点的COM服务器 121
6.6 例14在MFC中编写带接收器的COM客户程序 123
6.7 例15在MFC中编写一个COM单用服务器 126
6.8 例16在MFC中聚合COM对象 131
6.9 例17在MFC中编写ActiveX控件 141
第七章 使用ATL编写COM服务器 146
7.1 例18使用ATL编写COM DLL服务器 146
7.2 例19使用ATL编写COM EXE服务器 151
7.3 例20使用ATL编写COM DLL服务 154
7.4 例21扩展你的ATL COM类 157
7.5 例22编写支持晚绑定的ATL服务器 162
7.6 例23编写ATL单用类服务器 162
7.7 例24编写可剪裁的ATL COM服务器 163
7.8 例25编写带有连接点的ATL COM服务器 168
7.9 例26使用ATL聚合COM对象 173
8.1 例27使用VB编写COM ActiveX服务器 179
第八章 使用VB和VJ++编写COM服务器 179
8.2 例28在VB客户端中添加接收器 181
8.3 例29使用VJ++编写COM DLL服务器 183
8.4 例30在VJ++客户端中添加接收器 184
第九章 COM通信 188
9.1 例31使用C++传递数据给一个COM对象 188
9.2 例32使用C++在线程之间传递接口指针 200
9.3 例33在C++和VB之间传递数据 202
9.4 例34在VC++和VB之间传递数据集合 204
9.5 例35在C++和VJ++之间传递数据 208
第十章 COM+实例 213
10.1 例36使用ATL编写MTS或COM+服务器 213
10.2 例37在MTS中注册一个服务器 218
10.3 例38在COM+中注册一个服务器 221
10.5 例39使用COM+事件服务器 227
10.7 例40编写并使用COM+排队COM服务器 230
第十一章 访问数据库对象 233
11.1 例41使用C++和ADO访问数据库 233
11.2 例42使用VB和ADO访问数据库 240
11.3 例43使用VJ++和ADO访问数据库 244
第十二章 其他例子 250
12.1 例44使用MFC在COM对象中添加许可 250
12.2 例45使用ATL在COM对象中添加许可 255
附录A COM表 256
12.3 例46处理COM的错误 258
12.4 例47使用MFC关闭“Both”COM对象的序列化要求 262
12.5 例48使用ATL关闭“Both”COM对象的序列化要求 263
附录B COM错误提示 269