第1章 Visual C++.NET介绍 1
1.1 新特性 1
1.1.1 特性化编程 1
1.1.2 托管代码和面向.NET框架 2
1.1.3 库 4
1.1.4 新的开发环境 4
1.2 创建Visual C++.NH应用 5
1.2.1 创建Visual C++项目 6
1.2.2 用Visual C++应用程序向导创建项目 6
1.2.3 往项目中添加项 7
1.2.4 编译、生成和分发Visual C++应用 9
1.3 开发实例 9
1.3.1 概述 10
1.3.2 创建ATL COM服务器 10
1.3.3 创建简单的Win32 COM客户端程序(ComProdClient.exe) 16
1.3.4 向ATL.COM业务对象添加.NET框架支持 19
1.3.5 创建简单的C++托管扩展客户端程序(MgdProdClient.exe) 22
1.3.6 创建Visual C*.NET框架客户端程序 24
1.4 关于Visual C*.NET的常见问题 26
1.5 小结 28
第2章 MFC编程基础 29
2.1 Windows应用的基本框架 29
2.2 MFC编程领域 33
2.3 MFC的内容 34
2.4 开发基于MFC的应用的基本方法 36
2.5 应用程序类 38
2.5.1 InitInstance成员函数 39
2.5.2 Run成员函数 40
2.5.3 ExitInstance成员函数 41
2.5.4 OnIdle成员函数 41
2.5.5 CWinApp提供的特殊服务 42
2.6 窗口对象 43
2.7 实例 44
2.8 小结 46
第3章 消息处理 47
3.1 基本概念 47
3.1.1 消息及其类别 47
3.1.2 消息处理程序和消息映射 48
3.1.3 用户界面对象和命令ID 48
3.2 消息处理的基本流程 50
3.2.1 非命令消息的处理 51
3.2.2 命令消息的处理流程 52
3.2.3 消息映射表 54
3.2.4 消息处理函数 56
3.2.5 消息映射范围的处理程序 58
3.2.6 反射消息的处理函数 61
3.3 使用自定义消息 64
3.4 小结 65
4.1.1 创建对话框 67
第4章 开发基于对话框的应用 67
4.1 理解对话框 67
4.1.2 初始化对话框 70
4.1.3 处理Windows消息 70
4.1.4 对话框数据交换 72
4.1.5 对话框数据验证 73
4.1.6 关闭对话框 74
4.2 使用有模式对话框 74
4.3 使用无模式对话框 79
4.4 使用属性表 84
4.5 小结 88
第5章 使用CObject类提供的服务 89
5.1 概述 89
5.2 使用基本CObject功能 90
5.2.1 转储 90
5.2.2 断言百双 91
5.3.1 添加运行时类信息 93
5.3 运行时类信息 93
5.3.2 运行时访问对象的类信息 94
5.4 动态创建 95
5.5 序列化 96
5.5.1 创建可序列化的类 96
5.5.2 序列化对象 98
5.6 小结 103
第6章 文档/视图结构及其应用 105
6.1 概述 105
6.1.1 文档/视图结构的好处 105
6.1.2 核心类 106
6.1.3 SDI和MDI 106
6.2 文档/视图的创建过程 108
6.2.1 创建文档模板 108
6.2.2 文档/视图的创建 109
6.3 使用文档 111
6.2.3 MDC对象之间的关系 111
6.3.1 从CDocument派生文档类 112
6.3.2 用文档数据变量管理数据 112
6.3.3 将数据序列化到文件和从文件序列化数据 113
6.3.4 不使用序列化机制 114
6.3.5 在文档中处理命令 115
6.4 使用视图 115
6.4.1 在视图中绘图 116
6.4.2 通过视图解释用户输入 117
6.4.3 对打印的支持 118
6.4.4 滚动和缩放视图 126
6.5 初始化和清理文档/视图 131
6.5.1 初始化文档和视图 132
6.5.2 清理文档和视图 132
6.6 将多个视图添加到单个文档 133
6.6.1 修改现有应用程序类 133
6.6.3 创建并附加新视图 134
6.6.2 创建和修改新视图类 134
6.6.4 实现切换函数 135
6.6.5 添加视图切换支持 136
6.7 拆分窗口 137
6.7.1 动态拆分 137
6.7.2 静态拆分 139
6.8 小结 144
第7章 创建和使用DLL 145
7.1 理解DLL 145
7.2 DLL类型 146
7.3 链接到DLL 147
7.3.1 隐式链接 147
7.3.2 显式链接 148
7.3.3 定位DLL 150
7.4 导出和导入 150
7.4.1 使用.DEF文件 150
7.4.2 使用_declspec 152
7.5 创建和使用非MFC DLL 153
7.6 定义多个应用之间共享的数据 165
7.7 创建和使用静态链接到MFC的规则DLL 166
7.8 创建和使用动态链接到MDC的规则DLL 172
7.9 创建和使用MFC扩展DLL 175
7.10 小结 182
8.1 创建和使用纯资源的DLL 183
8.1.1 创建 183
第8章 创建和使用资源 183
8.1.2 使用 185
8.2 MFC扩展DLL中的资源 190
8.2.1 CdynLinkLibrary对象 190
8.2.2模块定位资源的顺序 191
8.2.3 实例 192
8.3 附属DLL 193
8.4 小结 197
9.1 概述 199
第9章 多线程编程 199
9.2 创建用户界面线程 200
9.3 创建辅助线程 209
9.3.1 启动线程 209
9.3.2 实现控制函数 209
9.3.3 实例 210
9.4 实现线程安全 215
9.4.1 选用合适的同步类 216
9.4.2 实现线程安全的基本方法 216
9.4.3 实例 217
9.5 终止线程 224
9.5.1 正常线程终止 224
9.5.2 过早的线程终止 224
9.5.3 检索线程的退出代码 225
9.5.4 实例 225
9.6 小结 232
10.1.1 ODBC组件 235
10.1 概述 235
第10章 ODBC数据库编程 235
10.1.2 编程步骤 236
10.1.3 在文档/视图结构中使用数据库类 238
10.1.4 实例 239
10.2 使用CDatabase类 244
10.3 使用CRecordset 247
10.3.1 浏览记录集 247
10.3.2 参数查询 249
10.3.3 添加、编辑和删除记录 252
10.4 小结 257
第11章 ATL COM编程简介 259
11.1 COM的基本概念 259
11.1.1 接口 260
11.1.2 IUnknown 260
11.1.3 引用计数 260
11.1.6 聚合 261
11.1.4 QueryInterface 261
11.1.5 封送处理 261
11.2 ATL介绍 262
11.2.1 模板和模板库 262
11.2.2 ATL的使用范围 262
11.2.3 ATL还是MFC 262
11.3 ATL中的COM 262
11.3.1 实现CComObject RootEx 263
11.3.2 实现CComObject、CComAggObject和CComPolyObject 263
11.3.3 支持IDispatch和IErrorInfo 264
11.3.4 支持IDispEventImpl 264
11.3.5 更改默认类工厂和聚合模型 266
11.3.6 创建聚集对象 266
11.4 使用COM特性 267
11.5 用ATL创建COM实例 273
11.5.1 创建项目 273
11.5.2 添加服务器对象 275
11.5.3 实现服务器 278
11.5.4 添加客户端对象 281
11.5.5 添加客户端接口 282
11.5.6 实现客户端 283
11.5.7 使用客户端控件 286
11.6 小结 288
第12章 支持双重接口 289
12.1 IDispatch接口的实现 289
12.2 调用双接口 292
12.2.1 通过IUnknown接口调用 292
12.2.2 通过IDispatch接口调用 294
12.3 小结 301
第13章 可连接对象 303
13.1 理解可连接对象 303
13.2 实现连接对象 304
13.3 基于连接的COM事件 308
13.4 小结 312
第14章 ATL中的窗口编程 313
14.1 ATL中的窗口类 313
14.2 实现窗口 314
14.2.1 基于新Windows类创建窗口 314
14.2.2 为现有Windows类创建超类 322
14.2.3 为现有窗口创建子类 323
14.3 实现对话框 326
14.3.1 使用“ATL对话框向导”添加对话框 326
14.3.2 手动添加对话框 326
14.3.3 实例:创建基于ATL对话框的应用 328
14.4 使用WTL库进行ATL窗口编程 336
14.5 小结 347
第15章 ATL Server开发Web应用 349
15.1 ATL Server应用程序结构 349
15.2.1 SBF基本语法 353
15.2 服务器响应文件 353
15.2.2 向替换方法传递参数 357
15.3 获取用户输入 363
15.4 输入验证 367
15.4.1 利用CValidateObject进行验证 368
15.4.2 使用正则表达式 371
15.5 使用会话状态服务 378
15.6 使用缓存 392
15.7 使用性能监视服务 402
15.8 文件上载 411
15.9 创建安全的Web应用 415
15.10 创建和使用ISAPI过滤器 421
15.11 小结 427
第16章 ATL Server开发XML Web服务 429
16.1 XML Web服务简介 429
16.2 ATL Server对XML Web服务的支持 430
16.3 Web服务的使用 435
16.4 Web服务中的内存管理 438
16.5 使用SOAP标头 443
16.6 使用缓存 450
16.7 自定义传输协议 457
16.8 小结 461
第17章 C++托管扩展编程 463
17.1 何时使用C++托管扩展 463
17.2 托管C++的项目及内容 464
17.3 托管类型 465
17.3.1 _gc数组 466
17.3.2 托管指针类型 467
17.3.3 字符串 469
17.3.4 委托 469
17.3.5 MFC和托管类型 470
17.4 为现有应用程序添加C++托管扩展 471
17.4.1 修改现有项目设置 471
17.3.6 托管类型和main()函数 471
17.4.2 在现有应用程序中使用新的托管扩展功能 472
17.5 处理异常 473
17.5.1 使用托管扩展引发异常 473
17.5.2 使用托管扩展的try/catch块 473
17.5.3 捕捉非托管C++类型 474
17.5.4 托管扩展和_finally关键字 475
17.6 程序集 476
17.7 序列化 482
17.8 基于委托的事件处理 485
17.9 互操作 491
17.10 使用ADO.NET访问数据 495
17.11 创建窗体应用 505
17.12 创建多线程应用 509
17.13 创建基于远程处理框架的分布式应用 515
17.14 创建XML Web服务 521
17.15 小结 528