第一部分 C++Builder使用手册 2
第一章 安装C++Builder 2
1.1 软硬件环境要求 2
1.2 安装过程 2
1.3 卸载C++Builder 7
1.4 启动C++Builder 9
第二章 C++Builder的开发环境 11
2.1 开发环境(IDE)概览 11
2.2 窗体编辑器(FORM EDITOR) 11
2.3 对象观察器(OBJECT INSPECTOR) 12
2.4 控制面板 13
2.4.1 标准控件页(Standard) 13
2.4.2 Windows95控件页(Win95) 13
2.4.3 附加控件页(Additional) 14
2.4.4 数据访问控件页(Data Access) 15
2.4.5 数据控制控件页(Data Controls) 15
2.4.6 Win3.1控件页(Win3.1) 16
2.4.7 Internet控件页(Internet) 16
2.4.8 对话框控件页(Dialogs) 17
2.4.9 系统控件页(System) 17
2.4.10 快速报表控件页(QReport) 18
2.4.11 ActiveX控件页(ActiveX) 18
2.4.12 定制控件面板 18
2.5 工具栏 19
2.6 主菜单 20
2.6.1 文件菜单(File) 20
2.6.2 编辑菜单(Edit) 21
2.6.3 搜索菜单(Search) 21
2.6.4 视图菜单(View) 22
2.6.5 工程菜单(Project) 22
2.6.6 运行菜单(Run) 23
2.6.7 控件菜单(Componcnt) 23
2.6.8 数据库菜单(DataBase) 23
2.6.9 工作组菜单(WorkGroups) 24
2.6.10 工具菜单 24
2.6.11 选项菜单(Option) 24
2.6.12 帮助菜单(Help) 24
2.7 弹出式菜单 25
2.8 代码编辑器 26
第三章 C++Builder的工程 27
3.1 工程文件 27
3.2 工程的基本操作 28
3.3 工程管理器 28
3.3.1 工具栏 28
3.3.2 表头栏 29
3.3.3 列表框 29
3.3.4 状态栏 29
3.3.5 弹出式菜单 29
3.4 指定应用程序的帮助文件和肖像文件 30
3.5 指定工程的启动窗体 30
3.6 选择工程平台 31
3.7 编译和运行工程 35
3.7.1 编译单个的文件 35
3.7.2 编译工程(Make) 36
3.7.3 创建工程(Build) 36
3.7.4 运行工程 36
3.7.5 开发小组和版本的管理 36
3.7.6 获取编译的信息 36
3.7.7 出错状态 37
第四章 C++Builder的窗体 39
4.1 窗体的属性 39
4.2 窗体的事件 41
4.3 创建新窗体 42
4.4 在多个窗体和单元文件之间切换 43
4.5 将窗体加入到Object Repository中 44
4.6 将窗体存储为ASCII码 45
4.7 使用数据库窗体向导(Database Form Wizard) 46
第五章 使用C++Builder的控件 50
5.1 在窗体中加入和修改控件 50
5.2 在窗体上选择控件 50
5.3 控件的删除、剪切、拷贝和粘贴 51
5.4 控件的排列 51
5.5 容器控件 52
第六章 事件 53
6.1 产生新的事件句柄 53
6.2 重用事件句柄 54
6.3 多个控件共享的事件 55
6.4 定位已有的句柄 55
6.5 修改共享的事件句柄 56
6.6 删除事件句柄 56
6.7 由用户产生的事件 56
6.7.1 按钮 56
6.7.2 键盘 56
6.7.3 鼠标 58
第七章 代码编辑器 60
7.1 定制代码编辑器 60
7.1.1 使用预定义 60
7.1.2 用于定制代码编辑器的选项 61
7.1.3 选择代码编辑器的颜色 62
7.1.4 配置显示和文件操作 62
7.2 代码编辑器中的弹出式菜单 62
7.3 获取帮助和错误信息 63
7.4 代码编辑器的页面 63
第八章 控件的属性 64
8.1 属性的概念 64
8.2 在设计期间修改控件的属性 64
8.3 在运行期间修改控件的属性 65
8.4 属性编辑器 65
8.4.1 直接输入编辑器 65
8.4.2 下拉编辑器 65
8.4.3 对象列表编辑器 65
8.4.4 对话框编辑器 65
8.4.5 嵌套属性 66
8.4.6 特殊的属性 67
8.5 修改控件的共有属性 68
第九章 用控件设计应用程序的界面 70
9.1 菜单 70
9.1.1 设计标准菜单 70
9.1.2 设计弹出式菜单 71
9.1.3 将菜单和窗体关联 71
9.1.4 在运行期间修改菜单 72
9.2 图像 72
9.3 滚动条 74
9.3.1 ScrollBar控件 74
9.3.2 ScrollBox控件 74
9.4 状态栏 74
9.5 工具条 76
9.6 在运行期间设置控件的提示 77
9.7 对话框 77
9.8 多页控制 79
第十章 DDE程序的开发 82
10.1 DDE控件 82
10.2 DDE对话 83
10.3 DDE客户程序 84
10.4 DDE服务程序 84
10.5 链接DDE客户程序和DDE服务程序 84
第十一章 开发多文档界面(MDI)应用程序 86
11.1 创建MDI父窗体 86
11.2 创建MDI子窗体 87
11.3 与MDI有关的几个运行期属性 88
11.3.1 ActiveMDIChild属性 88
11.3.2 MDIChildren属性 89
11.3.3 MDIChildCount属性 89
11.4 合并菜单 90
11.5 安排和处理打开的子窗口 90
11.5.1 Tile排列方式 91
11.5.2 Cascade排列方式 91
11.5.3 Arrange方式 91
第十二章 开发数据库应用程序 94
12.1 理解数据库控件 94
12.2 创建数据库应用程序的窗体 95
12.2.1 设计窗体 95
12.2.2 连接数据库控件 96
12.3 在C++Builder中建立数据库 97
12.3.1 使用Database Desktop 97
12.4 使用字段编辑器修改数据库字段 101
12.5 如何取得字段的值 103
12.6 筛选数据 103
12.7 重用对象库中的数据模块 104
第十三章 应用程序的调试 106
13.1 错误类型 106
13.1.1 编译期错误 106
13.1.2 逻辑错误 106
13.1.3 运行期错误 106
13.2 规划调试策略 107
13.3 准备调试 107
13.3.1 为应用程序生成调试信息 107
13.3.2 打开调试器 107
13.3.3 调试VCL(可视化控件库)源代码 108
13.4 修正语法错误 108
13.5 控制程序的运行 109
13.6 使用合成调试器 110
13.6.1 单步跟踪 110
13.6.2 跟踪执行 111
13.6.3 跳到指定点 111
13.6.4 返回到执行点 112
13.6.5 暂停运行 112
13.6.6 重新编译并运行程序 112
13.7 CPU窗口 112
13.7.1 反汇编面板 113
13.7.2 内存转储面板 115
13.7.3 机器堆栈面板 116
13.7.4 寄存器面板 116
13.7.5 标志面板 116
13.8 使用断点 117
13.8.1 设置断点 117
13.8.2 断点定位 119
13.8.3 删除断点 119
13.8.4 禁止和允许断点 119
13.8.5 修改断点的属性 120
13.9 使用观察窗口 120
13.9.1 增加和删除观察窗口 120
13.9.2 修改观察窗口的属性 120
13.10 计算和修改表达式的值 122
13.11 函数调用定位 122
第二部分C++Builder语言指南 124
第十四章 词法符号 124
14.1 空白 124
14.1.1 带\的行分隔符 124
14.1.2 使用手册注释 125
14.2 词法符号 126
14.2.2 标识符 128
14.2.3 常数 128
14.2.4 标点符号 138
第十五章 语言的结构形式 141
15.1 有关概念 141
15.1.1 对象(object) 141
15.1.2 存储类和类型 142
15.1.3 作用域 142
15.1.4 可见性 143
15.1.5 生存期 143
15.1.6 编译单元 144
15.1.7 连接 145
15.2 申明的语法 146
15.2.1 暂时定义 146
15.2.2 可能的申明 147
15.2.3 外部申明和定义 150
15.2.4 类型指明符 151
15.2.5 类型分类 151
15.2.6 基本类型 153
15.2.7 申明和申明符 156
15.2.8 存储类指明符的使用 157
15.2.9 变量修饰符 158
15.2.10 多进程变量 162
15.2.11 函数指明符 163
15.3 指针 163
15.3.1 对象指针 163
15.3.2 函数指针 163
15.3.3 指针申明 164
15.3.4 指针常数 164
15.3.5 指针运算 165
15.3.6 指针转换 166
15.3.7 C++引用申明 166
15.4 数组 166
15.5 函数 167
15.5.1 函数申明和定义 167
15.5.2 函数申明和原型 168
15.5.3 函数定义 169
15.5.4 形式参数申明 170
15.5.5 函数调用和参数转换 170
15.6 结构 171
15.6.1 无标志结构和typedefs 171
15.6.2 结构成员申明 171
15.6.3 结构和函数 171
15.6.4 结构成员的访问 171
15.6.5 结构字对齐 173
15.6.6 结构的名字空间 174
15.6.7 不完整申明 174
15.6.8 位域 175
15.7 联合 176
15.7.1 无名联合(仅限C++) 176
15.7.2 联合申明 177
15.8 枚举 177
15.9 表达式 179
15.9.1 操作符的相关性和优先权 182
15.9.2 表达式和C++ 183
15.9.3 计算顺序 183
15.9.4 错误和溢出 183
15.10 操作符概要 184
15.10.1 算术操作符 184
15.10.2 赋值操作符 184
15.10.3 位运算操作符 185
15.10.4 C++指明操作符 186
15.10.5 逗号操作符 186
15.10.6 条件操作符 186
15.10.7 相等操作符 187
15.10.8 逻辑操作符 187
15.10.9 后缀表达式操作符 187
15.10.10 基本表达式操作符 188
15.10.11 预处理指令 189
15.10.12 引用/重引用操作符 189
15.10.13 关系操作符 190
15.10.14 sizeof操作符 191
15.10.15 typeid操作符 192
15.10.16 数组下标操作符 193
15.10.17 函数调用操作符 194
15.10.18 直接成员选择操作符 194
15.10.19 间接成员选择符 194
15.10.20 增量/减量操作符 195
15.10.21 单目操作符 196
15.10.22 二进制操作符 197
15.10.23 倍数操作符 198
15.11 语句 199
15.11.1 块 200
15.11.2 标号语句 200
15.11.3 表达式语句 201
15.11.4 选择语句 201
15.11.5 循环语句 201
15.11.6 跳转语句 201
第十六章 C++语言的特性 202
16.1 C++的名字空间 202
16.1.1 名字空间的定义 202
16.1.2 名字空间的申明 203
16.1.3 名字空间的别名 203
16.1.4 扩展的名字空间 203
16.1.5 无名名字空间 204
16.1.6 名字空间成员的访问 205
16.2 新风格的类型强制 207
16.2.1 const cast 207
16.2.2 dynamic_cast 208
16.2.3 reinterpret_cast 209
16.2.4 static_cast 210
16.3 运行期类型标识(RTTI) 211
16.3.1 __rtti和-RT选项 211
16.3.2 -RT选项和析构函数 212
16.4 引用 213
16.4.1 简单引用 213
16.4.2 引用参数 213
16.5 作用域存取操作符 215
16.6 new和delete操作符 215
16.6.1 操作符new 215
16.6.2 操作符delete 218
16.6.3 对new操作符的错误处理 218
16.6.4 操作符new与数组 219
16.6.5 操作符delete与数组 219
16.6.6 ::new操作符 219
16.6.7 操作符new的重载 220
16.6.8 操作符delete的重载 220
16.7 类 220
16.7.1 VCL类的申明 221
16.7.2 类名 222
16.7.3 类类型申明 222
16.7.4 类名作用域 222
16.7.5 类对象 223
16.7.6 类成员表 223
16.7.7 成员函数 223
16.7.8 关键字this 223
16.7.9 静态成员 224
16.7.10 内部函数 225
16.7.11 成员作用域 227
16.7.12 虚基类 231
16.7.13 类的友元 232
16.8 构造函数和析构函数 234
16.8.1 构造函数 234
16.8.2 析构函数 240
16.9 重载操作符 243
16.9.1 怎样构造一个复杂矢量类 243
16.10 重载操作符函数 246
16.10.1 重载操作符和继承 246
16.10.2 重载单目操作符 246
16.10.3 重载二进制操作符 246
16.10.4 重载赋值操作符 247
16.10.5 重载函数调用操作符() 247
16.10.6 重载下标操作符[ ] 247
16.10.7 重载类成员存取操作符-> 248
16.11 多态类 248
16.11.1 虚函数 248
16.11.2 抽象类 250
16.12 C++作用域 251
16.12.1 类作用域 251
16.12.2 隐藏 251
16.12.3 C++作用域规则小结 251
16.13 模板 252
16.13.1 模板语法 252
16.13.2 模板体分析 253
16.13.3 函数模板 253
16.14 类模板 256
16.14.1 模板参数 256
16.14.2 在模板中使用<> 257
16.14.3 在模板中使用 安全类型属 类 257
16.14.4 在模板中删除指针 258
16.15 模板编译开关 258
16.16 输出和输入模板 259
第十七章 编写C++Builder代码 262
17.1 缺省行为,在内存中建立窗体 262
17.2 在运行期创建窗体 262
17.2.1 模态窗体 263
17.2.2 非模态窗体 264
17.3 给窗体传递参数 264
17.4 从窗体中重新得到数据 265
17.4.1 非模态窗体 266
17.4.2 模态窗体 267
17.5 C++Builder工程中使用Delphi窗体 269
第十八章 动态连接库 271
18.1 什么是动态连接库 271
18.2 C++Builder中如何使用DLL 271
18.3 C++Builder中如何创建DLL 271
18.4 编译DLL 272
18.5 创建包含VCL元件的DLL 272
18.6 DLL和字符串对象 275
第十九章 异常处理 276
19.1 C++异常处理 276
19.2 异常申明 277
19.3 跳出异常 277
19.4 处理异常 278
19.5 异常的详细说明 279
19.6 异常处理中的构造函数和析构函数 282
19.7 无处理异常 282
19.8 基于C的结构化异常 283
19.8.1 try-except异常处理语法 283
19.8.2 try-finally中断语法 283
19.9 在C++程序中使用基于C的异常 283
19.10 处理基于C的异常 285
第二十章 预处理 286
20.1 预处理指令 286
20.1.1 #(空指令) 286
20.1.2 #define 286
20.1.3 #if,#elif,#else,和#endif 286
20.1.4 #ifdef and#ifndef 287
20.1.5 #error 288
20.1.6 #include 288
20.1.7 #line 289
20.1.8 #Pragma summary 289
20.1.9 #undef 293
20.2 定义和未定义宏 294
20.2.1 使用-D和-U命令行选项 294
20.2.2 关键字和作为宏保护的词 294
20.3 带参数的宏 295
20.3.1 嵌套的括号和逗号 295
20.3.2 带# #的词法分析 295
20.3.3 带#字符串的转换 296
20.3.4 用反斜杠作为续行符 296
20.4 用#INCLUDE作文件包含 297
20.4.1 用<头文件名>搜索头文件 297
20.4.2 用“头文件名”搜索头文件 297
20.5 条件编译 297
20.5.1 defined 297
20.6 预定义宏 298
第二十一章 C++Builder程序员的编程方法 300
21.1属性—方法—事件模式(Propertles-mothod-event) 300
21.2 控件和类 300
21.3 属性的赋置/取值函数 301
21.4 用老版本代码工作 302
21.4.1 内部汇编程序 302
21.4.2 Objcct Windows库(OWL)和MFC的应用程序 303
21.5 从Delphi代码到C++Builder的转换 303
21.5.1 升级的构造函数 303
21.5.2 Delphi返回类型 304
第二十二章 C++语言对VCL的支持 306
22.1 对Delphi数据类型的支持 306
22.2 特殊的Delphi参数类型 308
22.2.1 开放数组 308
22.2.2 var参数 308
22.2.3 无类型参数 309
22.3 属性 309
22.3.1 属性的特性 309
22.3.2 属性操作符 310
22.3.3 升级的属性 311
22.3.4 属性申明 311
22.3.5 数组属性 312
22.4 访问指明符 313
22.4.1 Published属性 313
22.4.2 OLE支持 313
22.5 开放数组 314
22.5.1 临时数组参数 315
22.5.2 存在的数组参数 317
22.6 异常处理 317
22.6.1 对Delphi的异常处理支持 317
22.6.2 操作系统异常 318
22.6.3 Delphi异常 318
22.6.4 可移植性因素 318
22.7 限制 319
第二十三章 扩展的Delphi数据类型 320
23.1 扩展的Delphi数据类型 320
23.2 集合(Set)数据类型 320
23.3 集合引用 322
23.4 AnsiString数据类型 323
23.5 AnsiString数据类型引用 324
23.6 Variant数据类型 326
23.7 Variant引用 335
23.8 日期—时间(TDateTime)数据类型 340
23.9 日期—时间数据类型引用 341
23.10 Currency数据类型 343
23.11 Currency数据类型引用 343
第二十四章 OLE 346
24.1 关于OLE 346
24.2 将另一个应用程序自动化 346
24.2.1 创建OLE对象实例 346
24.2.2 设置OLE对象的属性 347
24.2.3 调用OLE对象的方法 347
24.3 关于OLE自动服务器 348
24.3.1 进程内和进程外服务器 348
24.3.2 自动对象的举实例 349
24.3.3 自动对象 349
24.4 关于OLE自动对象 350
24.5 创建OLE自动服务器 350
24.5.1 创建 一个自动服务器 350
24.5.2 增加自动对象(自动对象向导) 351
24.5.3 自动属性和方法 352
附录:按字母顺序的关键字 353
关键字 353