第1章 引言 1
1.1 C++Builder的特性 2
1.2 C++Builder的版本 5
1.3 本书内容 5
1.4 本书的一些约定 6
第2章 面向对象的编程 7
2.1 C++语法介绍 8
2.1.1 基本数据类型 9
2.1.2 复杂数据类型 10
2.1.3 C++的操作符 12
2.1.4 建立新的类和对象 14
2.1.5 存取特性:私有、保护和公共 16
2.1.6 构造函数和折构函数 17
2.1.7 已有类型的继承 17
2.1.8 函数的重载 18
2.1.9 虚拟函数 22
2.1.10 异常处理 25
2.2 C++的高级特性和误区 27
2.2.1 虚拟析构函数 27
2.2.3 拷贝构造函数和“operator=” 28
2.2.2 对象成员的初始化次序 28
2.2.4 +=与+号的差别 31
2.2.5 函数返回值的问题 32
2.2.6 运行时类型识别 33
2.3 C++Builder扩展的语法 37
2.3.1 _classid关键字 37
2.3.2 _closure关键字 37
2.3.3 _property和_published关键字 39
2.4 C++与Object Pascal的比较 39
2.4.1 C++和OP对象的区别 39
2.5 小结 40
2.4.2 构造函数的区别 40
第3章 使用C++Builder 43
3.1 集成开发环境 44
3.1.1 主窗口 45
3.1.2 窗体设计器 48
3.1.3 对象观察器 50
3.1.4 代码编辑器 52
3.1.5 Code Explore 53
3.1.6 工程管理器 55
3.1.7 保存界面设置 56
3.1.8 To-Do列表 57
3.2.1 使用集成调试器 59
3.2.2 使用断点 59
3.2 调试C++Builder程序 59
3.2.3 使用CodeGuard 62
3.3 发布应用程序 65
3.4 自定义C++Builder环境 66
3.4.1 保存和分发C++Builder的配置信息 66
3.4.2 获得类似Visual C++的调试环境 66
3.5 小结 66
第4章 理解Windows消息机制 69
4.2 Windows的消息系统 70
4.1 消息的基本概念 70
4.3 C++Builder的消息系统 71
4.4 TApplication的OnMessage事件 73
4.5 利用消息映射截获消息 76
4.6 关于消息映射的深入讨论 80
4.7 重载WndProcO函数 81
4.8 非标准的消息 84
4.8.1 通知消息 84
4.8.2 自定义消息 85
4.9 自己发送消息 86
4.8.3 VCL内部消息 86
4.9.1 Perform() 87
4.9.2 SendMessage()和PostMessage() 87
4.9.3 Broadcast()和BroadcastSystemMessage() 87
4.9.4 一个范例 89
4.10 消息和VCL事件的关系 93
4.11 小结 93
第5章 DLL技术 95
5.1 创建动态链接库 96
5.2 生成对话框和输出函数 99
5.3 生成客户程序 102
5.4 小结 106
第6章 创建定制组件 107
6.1 修改已有的组件 108
6.2 增加新的属性 110
6.2.1 属性的类型 110
6.2.2 生成新属性的语法 111
6.3 安装新组件 112
6.4 为属性指定默认值 113
6.5 创建数组属性 114
6.6 创建自定义类型的属性 115
6.7 增加新的事件 117
6.8 编写属性编辑器 118
6.8.1 创建新的属性编辑器 118
6.8.2 获取文本编辑属性 119
6.8.3 指定属性编辑器的特性 120
6.8.4 注册属性编辑器 122
6.9 编写组件编辑器 123
6.9.1 增加菜单项目 123
6.9.2 改变双击时的行为 124
6.9.3 注册组件编辑器 125
6.10 在控件编程中处理消息 125
6.10.1 响应Windows的固有消息 126
6.10.2 生成鼠标敏感形式的界面 128
6.11 为组件指定面板位图 129
6.12 小结 130
第7章 COM技术概要 131
7.1 什么是OLE与COM 132
7.2 基本概念 132
7.2.1 实现IUnknown接口 132
7.2.2 COM的线程模型 133
7.3 使用OleContainer控件 134
7.4.1 使用向导生成COM服务器 139
7.4 建立进程内COM服务器 139
7.4.2 使用类型库编辑器 142
7.4.3 设置ATL选项 143
7.5 测试COM对象 144
7.6 编写和测试具有事件的COM对象 146
7.7. 编写Automation对象 147
7.7.1 Automation编程基础 147
7.7.2 编写Automation服务器 148
7.7.3 编写Automation控制器 151
7.8 ActiveX控件编程 153
7.8.2 建立ActiveX控件 154
7.8.1 在C++Builder中使用ActiveX控件 154
7.8.3 生成属性页 155
7.9 COM+新概念 156
7.9.1 COM+的发展过程 156
7.9.2 COM+的编程模型 157
7.9.3 COM+的事务处理模型 158
7.9.4 资源池(Resource Pooling)和对象池(Object Pooling) 160
7.10 创建COM+组件 161
7.11 COM+的事件模型 165
7.12 小结 166
第8章 编写多线程应用 169
8.1 理解线程和TThread对象 170
8.1.1 使用主线程 174
8.1.2 设定线程的优先级 178
8.2 编写线程函数 179
8.2.1 使用线程局部变量 180
8.2.2 检验其他线程发出的结束消息 180
8.3 协调线程 181
8.3.1 避免同时访问 181
8.2.3 进行清理工作 181
8.3.2 等待其他线程 183
8.4 执行线程对象 189
8.4.1 重载默认优先级 189
8.4.2 开始和停止线程 189
8.5 调试多线程应用程序 190
8.6 小结 190
第9章 编制专业的应用程序 191
9.1 在程序中调用其他的应用程序 192
9.2 在应用程序中动态创建VCL组件 198
9.3 使用注册表和INI文件 204
9.4 获取系统硬件信息 210
9.4.1 检测CPU的型号 211
9.4.2 检测内存状态 214
9.4.3 检测可用硬盘空间 215
9.4.4 检测CD-ROM 215
9.4.5 检测声卡配置 217
9.4.6 检测显示器信息 217
9.5 拖动无标题栏的窗体 219
9.6 创建任意形状的窗体 221
9.7 使用系统托盘区 226
9.7.1 使用API函数 226
9.7.2 使用TTrayIcon组件 232
9.8 图像的淡入淡出 235
9.9 拖放文件 239
9.10 用剪贴板共享信息 242
9.11 控制Windows的退出 246
9.12 实现历史文件菜单 248
9.13 把主菜单放到工具栏上 256
9.14 在程序中使用Office助手 258
9.14.1 Microsoft Agent技术的特点 258
9.14.2 Microsoft Agent的系统构成 259
9.14.3 在C++Builder中使用Microsoft Agent技术 259
9.14.4 一个范例 262
9.15 炫目的窗口动画 264
9.16 闪现通知 266
9.17 截获屏幕 268
9.18 小结 278
第10章 编写数据库应用程序 279
10.1 新增功能介绍 280
10.2 数据库应用的基础知识 281
10.2.1 数据访问组件 281
10.2.2 数据控制组件简介 283
10.3.1 数据库工作平台(Database Desktop) 284
10.3 C++Builder5的数据库工具 284
10.3.2 数据库资源管理器(SQL Explore) 293
10.3.3 数据字典 295
10.4 编写单层数据库应用程序 296
10.4.1 利用向导生成简单数据库应用程序 296
10.4.2 具有主从关系的数据库应用程序 300
10.4.3 使用查找字段(Look Field)和计算字段(Calculated Fields) 304
10.4.4 使用Data Diagram规划数据库应用程序 307
10.4.5 使用TQuery控件 309
10.5.1 ADO控件介绍 310
10.5 使用ADO控件组 310
10.5.2 使用ADO入门 311
10.6 利用Quick Report控件组建立报表 315
10.6.1 定制报表预览窗口 315
10.6.2 建立分组报表 322
10.7 利用决策支持组件进行数据分析 325
10.7.1 决策分析基础 325
10.7.2 决策分析的例子 326
10.7.3 如何建立决策分析程序 327
10.8 小结 329
第11章 编写多层数据库程序 331
11.1 多级数据库模式优点 332
11.2 基础技术 333
11.3 实例程序 335
11.3.1 建立应用程序服务器 335
11.3.2 建立瘦客户程序 337
11.4 更新异常处理 338
11.5 高级MIDAS特性 344
11.5.1 从客户端向应用服务器发送请求 344
11.5.2 控制数据记录传递的方式 345
11.5.3 利用公文包模式 346
11.5.4 参数化查询 347
11.5.5 主从数据库 348
11.6 小结 350
第12章 网络程序设计基础 351
12.1 Internet的历史 352
12.2 因特网的评议征求(RFC) 353
12.3 ISO参考模型以及TCP/IP参考模型 354
12.4 IP地址 357
12.5 端口号 359
12.6 利用C++Builder开发网络通信程序 361
12.7 小结 363
第13章 基于组件的Internet应用开发 365
13.1 E-mail客户端程序开发 366
13.1.1 NMSMTP和NMPOP3组件 366
13.1.2 E-mail收发程序 375
13.1.3 说明 384
13.2 编制WWW浏览器 385
13.2.1 TCppWebBrowser组件 385
13.2.2 一个浏览器程序 387
13.3 小结 393
第14章 WinSock通信程序的编制 395
14.1 利用组件开发WinSock程序 396
14.1.1 TClientSocket和TServerSocket组件 397
14.1.2 程序设计思想 398
14.1.3 建立服务器端Socket 399
14.1.4 建立客户端Socket 399
14.1.5 数据传输 400
14.1.6 一个聊天软件 401
14.2 利用API开发WinSock程序 407
14.2.1 基于API的套接字编程过程 407
14.2.2 套接字函数 408
14.2.3 IP、ICMP报文格式 428
14.2.4 编制Ping程序 432
14.3 小结 443
第15章 使用WinInet编写网络程序 445
15.1 WinInet 446
15.2 一个实例--断点续传 446
15.2.1 下载过程 447
15.2.2 初始化 449
15.2.3 文件下载 451
15.2.4 释放资源 453
15.3 小结 454
第16章 Web服务器程序的编制 455
16.1.2 统一资源定位符URL 456
16.1 基本概念 456
16.1.1 WWW的工作原理 456
16.2 Web服务器应用程序 457
16.2.1 公共网关接口 457
16.2.2 ISAPI和NSAPI 457
16.3 服务器扩展的运行 458
16.4 WebBroker技术 460
16.5 创建静态网页 461
16.5.1 Web应用程序对象 462
16.5.2 Web模块 462
16.5.4 动作项 463
16.5.3 Web派发器 463
16.5.5 用户请求报文 464
16.5.6 服务器响应报文 465
16.5.7 重定向Web站点 468
16.5.8 一个静态网页的范例 468
16.6 创建动态网页 471
16.6.1 网页生成器 471
16.6.2 动态网页范例 473
16.7 在网页中使用数据库信息 478
16.7.2 数据集网页生成器 479
16.7.1 会话对象 479
16.7.3 表生成器 480
16.7.4 使用数据库中的图像 481
16.7.5 使用MEMO字段 484
16.7.6 包含空格的字段名处理 485
16.7.7 利用隐藏标志记录客户信息 485
16.7.8 使用Cookie 487
16.7.9 范例 488
16.8 小结 500
第17章 基于Web的分布式多层应用 501
17.1.2 C++Builder提供的Web多层应用开发方案 502
17.1 基于Web的分布式系统结构 502
17.1.1 数据库应用系统结构的发展 502
17.2 InternetExpress技术 503
17.2.1 InternetExpress组件 503
17.2.2 使用JavaScript 504
17.3 使用InternetExpress开发普通的Web应用程序 505
17.4 使用InternetExpress开发分布式多层应用 509
17.4.1 开发应用程序服务器 510
17.4.2 开发Web应用程序 512
17.5.1 使用TXMLBroker组件 517
17.5 定制InternetExpress应用程序 517
17.5.2 使用TMidasPageProducer组件 519
17.6 InternetExpress技术的高级范例 522
17.6.1 开发应用程序服务器 522
17.6.2 开发Web应用程序 526
17.7 InternetExpress的扩充组件 534
17.8 小结 536
附录A C++Builder附带工具的使用 537
A.1 SQL Builder 538
A.2 SQL Explorer 539
A.3 WinSight32 540
A.4 InstallShield Express 541
A.5 使用TeamSource进行合作开发 543
A.5.1 TeamSource的源文件管理模型 543
A.5.2 开始使用TeamSource 544
A.5.3 指定本地目录 547
A.5.4 编辑用户列表 549
A.6 集成翻译环境 550
A.6.1 集成翻译环境的使用 550
A.6.2 建立Resource DLL 554
A.7.1 Coff2omf 556
A.6.3 如何更新Resource DLL 556
A.7 命令行工具的使用 556
A.7.2 Implib 557
A.7.3 Touch 557
A.7.4 Tdump 557
附录B 标准模板类库使用指南 561
B.1 介绍 562
B.1.1 容器和算法 562
B.1.2 迭代器 563
B.1.4 精制(refinement) 564
B.1.3 概念(concept)和模型(model) 564
B.1.5 STL的其他部分 565
B.2 容器类介绍 566
B.2.1 Sequence包含的容器类 566
B.2.2 Associative Containers包含的容器类 569
B.2.3 Container adaptors包含的容器类 578
B.3 标准算法介绍 580
B.3.1 非互斥算法 580
B.3.2 互斥算法 585
B.3.3 排序函数 600
B.4 小结 609