第一章 C++Builder 5可视化开发概念 1
1-1 C++Builder 5可视化开发环境 1
1-1-2 对象观察器 3
1-1-3 窗体设计器 4
1-1-4 代码编辑器 4
1-1-5 使用C++Builder 5的编辑功能 5
1-1-6 查找与替换特定的文本 7
1-2 一个简单的多媒体应用程序 9
1-2-1 设计MPlayer程序界面 10
1-2-2 部件的调整与对齐 10
1-2-3 添加菜单 12
1-2-4 装载初始画面 12
1-2-5 设置TOpenDialog部件的过滤器 13
1-2-6 以文本格式查看窗体文件 13
1-2-7 MPlayer程序代码 16
1-2-8 装载多媒体文件 19
1-2-9 VCL部件与内存分配 20
1-2-10 异常处理基础 20
1-2-11 运行时改变对象的属性 21
1-3 VCL与Windows API 22
1-3-1 封装Windows API函数 22
1-3-2 使用C++Builder 5编写普通Windows API代码 22
1-4 创建多窗体工程 26
1-4-1 创建一个含有“About”对话框的例程 27
1-4-2 指定自动创建的窗体 27
1-5 使用工程管理器 28
1-5-1 工程文件的组成 28
1-5-2 使用Project Manager进行工程管理 29
1-6 使用窗体模板和对话框向导 30
1-6-2 存储窗体模板 31
1-6-3 使用Dialog Wizard(对话框向导) 31
1-6-1 使用窗体模板创建窗体 31
1-7 使用工程模板和应用程序向导 32
1-7-1 使用工程模板 32
1-7-2 使用Application Wizard(应用程序向导) 33
1-8 小结 33
第二章C++Builder 5语言扩展 34
2-1 C++基本概念 34
2-1-1 类与对象 34
2-1-2 声明与定义 35
2-1-3 作用域和可见性 36
2-1-4 存储类和生存期 37
2-1-5 表达式和语句 38
2-1-6 数据类型 39
2-1-7 关键字 40
2-1-8 操作符 41
2-1-9 定义标识符的良好习惯 41
2-2 C++Builder 5对C的基本扩展 42
2-2-1 C++编译器 43
2-2-2 代码注释 43
2-2-3 新的I/O流 44
2-2-4 对象声明 44
2-2-5 const关键字 45
2-2-6 内联函数 47
2-3 强制类型转换 48
2-4 函数 49
2-4-1 函数声明 49
2-4-2 指向函数的指针 50
2-4-3 带有缺省参数值的函数 51
2-4-4 引用类型 52
2-5 创建堆对象 54
2-5-1 指针对象 55
2-5-2 创建堆对象 58
2-6-1 函数重载 59
2-6 函数重载与模板 59
2-6-2 函数模板 60
2-6-3 类型安全链接 65
2-7 从数据结构到抽象数据类型 66
2-7-1 数据 67
2-7-2 数据结构 67
2-7-3 数据类型 68
2-7-4 抽象数据类型 70
2-8 小结 77
第三章C++Builder 5 与VCL 78
3-1 VCL 78
3-1-1 从OWL和MFC到VCL 78
3-1-2 使用VCL 79
3-2 C++Builder 5工程源代码 84
3-2-1 Pascal与C++ 84
3-2-2 应用程序的初始化 85
3-2-3 创建应用程序的窗体 86
3-2-4 消息循环 89
3-3 创建Shapes程序 90
3-4 FTTI与TypInfo一瞥 94
3-5 VCL对象指针 96
3-6 VCL使用的C++Builder 5关键字 97
3-6-1 _automated 97
3-6-2 _classid(classname) 98
3-6-3 _closure 98
3-6-4 _declspec(delphiclass|delphireturn|pascalimplementation) 99
3-6-5 _fastcall 100
3-6-6 _property 100
3-6-7 _published 102
3-7 小结 103
4-1-1 事件 104
4-1 事件与C++Builder 5委托模型 104
第四章 事件与委托模型 104
4-1-2 委托 105
4-1-3 无契约编程 106
4-2 处理鼠标和键盘事件 106
4-3 集合类模板Set 108
4-3-1 使用集合类模板 109
4-3-2 使用集合跟踪消息 110
4-4 跟踪鼠标与键盘 116
4-4-1 跟踪鼠标与键盘 116
4-4-2 处理虚拟键 122
4-4-3 直接处理事件 123
4-5 处理WM_COMMAND 126
4-6 小结 132
第五章 创建MDI应用程序 133
5-1 多文档界面 133
5-1-1 创建父窗体 134
5-1-2 创建子窗体 135
5-1-3 窗体菜单的融合 138
5-2 添加属性与方法 140
5-2-1 添加父窗体的事件处理代码 140
5-2-2 添加子窗体的事件处理代码 142
5-3 使用通用对话框 149
5-3-1 文件打开对话框部件和文件保存对话框部件 149
5-3-2 查找对话框部件 153
5-3-3 替换对话框部件 154
5-3-4 字体对话框部件 155
5-4 文件打印 157
5-4-1 TPrinter对象 157
5-4-2 打印对话框部件 159
5-4-3 打印机设置对话框部件 160
5-5-1 添加工具栏 161
5-5 对文本编辑器的改进 161
5-5-2 跟踪子窗体 163
5-5-3 使用Tag属性 164
5-5-4 再谈GroupIndex属性 167
5-5-5 菜单的动态控制 168
5-6 小结 170
第六章 面向对象程序设计基础 171
6-1 类类型与程序设计语言 171
6-1-1 类的一般结构 171
6-1-2 面向类的程序设计 173
6-1-3 类与抽象数据类型 174
6-2 对象与对象交互 174
6-2-1 对象 174
6-2-2 对象标识 176
6-2-3 对象交互的客户/服务器机制 178
6-3 从C到C++的过渡 180
6-3-1 对抽象的再认识 181
6-3-2 过程式程序设计 181
6-3-3 全局对象 182
6-3-4 局部对象 182
6-3-5 数据封装 183
6-3-6 对对象的再认识 183
6-4 类的成员 184
6-4-1 静态成员 184
6-4-2 内联成员函数 186
6-4-3 带缺省参数值的成员函数 188
6-4-4 类的友元 189
6-4-5 类作用域与名字空间 193
6-4-6 局部类与嵌套类 199
6-4-7 指向类成员的指针 199
6-5 构造函数和析构函数 202
6-5-1 构造函数与析构函数 203
6-5-2 数据成员的初始化 207
6-5-3 赋值 210
6-5-4 浅复制与深复制 211
6-5-5 const修饰的成员函数 213
6-5-6 类型转换 215
6-6 存储管理 216
6-6-1 对象数组 216
6-6-2 构造函数与析构函数 219
6-7 类型模板 220
6-8 小结 225
第七章 异常处理基础 227
7-1 异常处理的基本理论 227
7-2 异常处理的引发 230
7-3-2 异常接口规范说明 233
7-4 VCI异常类 233
7-3-1 栈框架的调整 233
7-3 栈框架的调整与异常接口规范 233
7-4-1 VCL异常类 234
7-4-2 使用VCL异常类 235
7-5 小结 247
第八章 继承 248
8-1 继承的基本概念 248
8-2 访问控制与支配规则 253
8-2-1 访问控制 253
8-2-2 支配规则 259
8-3 构造函数与析构函数 261
8-3-1 构造函数与析构函数 261
8-3-2 隐含的复制初始化和赋值 262
8-4 类型适应与多态性 264
8-5 多重继承 267
8-6-1 参考文献信息的组织 271
8-6 读写自定义格式的文件数据 271
8-6-2 VCL流类 274
8-6-3 TReferenceStream类 276
8-6-4 主窗体的设计与实现 284
8-7 小结 332
第九章 重载 333
9-1 重载的基本类型 333
9-2 类中成员函数的重载 333
9-3 操作符重载 335
9-4 特殊操作符的重载 343
9-4-1 下标操作符的重载 343
9-4-2 函数调用操作符的重载 345
9-4-3 成员选择操作符的重载 345
9-4-4 增量和减量操作符的重载 347
9-4-5 new和delete操作符的重载 348
9-5 操作符重载与类型转换 351
9-6 小结 353
第十章 多态性与动态联编 354
10-1 动态联编的实现机制 354
10-1-1 联编与动态联编 354
10-1-2 虚函数 355
10-1-3 动态联编的实现机制 358
10-2 动态类型 361
10-2-1 运行时的类型识别 361
10-2-2 动态类型强制转换 364
10-3 特殊虚函数 365
10-3-1 虚析构函数 365
10-3-2 纯虚函数 366
10-3-3 操作符虚函数 367
10-4 Object Pascal与C++Builder 367
10-4-1 处理RJTI的差异 367
10-4-2 对象标识与实例化 368
10-4-3 VCL类的对象构造 371
10-4-4 在基类构造函数中调用虚函数 372
10-4-5 对象析构 374
10-4-6 成员函数AfterConstruction与 BeforeDestruction 375
10-4-7 类虚函数(Class virtual function) 375
10-5 抽象类——对类的再次抽象 375
10-6 小结 377
第十一章 创建部件 378
11-1 从已有的部件继承 378
11-2 理解C++Builder 5的包 382
11-2-1 使用包 382
11-2-2 使用运行时包 382
11-2-3 包的需求列表和包含列表 384
11-2-4 使用设计时包 385
11-2-5 创建包 386
11-3 创建部件 388
11-2-6 分发包 388
11-4 小结 398
第十二章 游戏编程 399
12-1 围棋打谱程序“WeiQi” 399
12-1-1 TWeiqiBoard类 399
12-1-2 围棋打谱程序“WeiQi” 414
12-2 DirectX编程 431
12-2-1 DDraw实例 431
12-2-2 DirectDraw属性的初始化 437
12-2-3 设置DirectDraw的图形模式 437
12-2-4 创建表面与缓冲区 440
12-2-5 文本输出 443
12-2-6 表面切换 443
12-2-7 响应用户击键 444
12-2-8 释放DirectDraw对象 444
12-3 小结 445