第1章 初识C++Builder 5 1
1.1 C++Builder 5的安装 1
1.1.1 第一次安装C++Builder 5的用户须知 1
1.1.2 要升级C++Builder 4的用户 3
1.1.3 安装C++Builder 5 3
1.1.4 注册表的改动 5
1.1.5 安装过程中可能遇到的错误信息 7
1.2 卸载C++Builder 5 9
1.3 获得详细的服务信息 11
1.4 C++Builder 5的新功能 11
第2章 学习操作傻瓜相机 17
2.1 取景——选择程序类型 17
2.2 建立程序的工作平台——窗体 18
2.2.1 给新的窗体命名 19
2.2.2 更改窗体的颜色 19
2.3 拖拖拉拉——可视化编程的特点 21
2.3.1 设置显示文本的标签 21
2.3.2 设置按钮 22
2.3.3 对齐按钮的位置 23
2.4 真正的控制——代码 24
2.5 按下您的快门——编译、运行应用程序 25
2.6 小结 27
第3章 深入的基础——熟悉集成开发环境 28
3.1 基本概念 28
3.2 集成开发环境总览 29
3.3 菜单系统 29
3.3.1 文件菜单[File] 30
3.3.2 编辑菜单[Edit] 32
3.3.3 搜索菜单[Search] 36
3.3.4 视图菜单[View] 40
3.3.5 工程菜单[Project] 44
3.3.6 运行菜单[Run] 47
3.3.7 控件菜单[Component] 49
3.3.8 数据库菜单[DataBase] 49
3.3.9 工具菜单[Tools] 50
3.3.10 帮助菜单[Help] 51
3.4 工具栏 52
3.4.1 改变工具栏的外观 53
3.4.2 配置工具栏 53
3.5 控件面板 54
3.5.1 标准控件页[Standard] 54
3.5.2 附加控件页[Additional] 55
3.5.3 Win32控件页[Win32] 55
3.5.4 系统控件页[System] 57
3.5.5 数据访问控件页[Data Access] 57
3.5.6 数据控制控件页[Data Control] 58
3.5.7 ADO控件页[ADO] 59
3.5.8 InterBase控件页[InterBase] 60
3.5.9 Midas控件页[Midas] 60
3.5.10 InternetExpress控件页[InternetExpress] 61
3.5.11 Internet控件页[Internet] 61
3.5.12 FastNet控件页[FastNet] 62
3.5.13 决策方控件页[DicisionCube] 63
3.5.14 快速报表控件页[QReport] 63
3.5.15 对话框控件页[Dialogs] 64
3.5.16 Win3.1控件页[Win3.1] 65
3.5.17 样板控件页[Sample] 66
3.5.18 ActiveX控件页[ActiveX] 66
3.5.19 COM服务器控件页[Severs] 67
3.5.20 定制控件面板 67
3.5.21 如何增加新的控件 68
3.6 对象监视器(Object Inspector) 68
3.6.1 对象监视器的构成 69
3.6.2 在对象监视器中修改属性 69
3.6.3 产生新的事件句柄 71
3.6.4 定位已有的句柄 72
3.7 窗体编辑器 72
3.8 代码编辑器 73
3.8.1 代码编辑器的组成 73
3.8.2 代码预测工具 73
3.8.3 代码浏览功能 76
3.8.4 代码编辑器中的快捷菜单 76
3.8.5 配置代码编辑器 79
3.8.6 获得帮助信息的快捷方法 84
3.9 [Class Explorer] 84
3.9.1 [Class Explorer]的使用 85
3.9.2 [Class Explorer]的配置 87
3.10 配置集成环境 87
第4章 让一切更美好——修饰您的程序界面 91
4.1 设计程序的菜单 91
4.1.1 设计标准菜单 91
4.1.2 设计快捷菜单 93
4.1.3 让菜单发挥作用 93
4.1.4 关于菜单编辑器 94
4.1.5 增加菜单的加速键和图标 96
4.2 设计工具条 100
4.2.1 常规样式的工具条 100
4.2.2 更流行一点的工具条 101
4.2.3 更“酷”的工具条——CoolBar 102
4.2.4 更灵活的“时尚”工具条——ControlBar 103
4.2.5 按钮事件的关联 104
4.3 设计状态栏 104
4.3.1 显示静态信息的状态栏面板 106
4.3.2 动态的状态栏信息 106
4.4 创建消息框 109
第5章 成为高手的绝招——程序代码 111
5.1 文件的结构 111
5.1.1 窗体文件的结构 111
5.1.2 工程源文件的结构 112
5.1.3 单元文件的结构 112
5.2 注释 114
5.3 数据类型 115
5.3.1 基本数据类型 115
5.3.2 枚举类型——Enum 117
5.3.3 带聚合性质的数据类型 120
5.4 数组 127
5.4.1 常规数组 127
5.4.2 动态数组 128
5.5 指针 131
5.5.1 指针申明 131
5.5.2 对象指针 132
5.5.3 函数指针 132
5.5.4 指针常数 132
5.5.5 指针运算 133
5.5.6 指针转换 133
5.5.7 C++引用申明 134
5.6 函数 134
5.6.1 函数申明和定义 134
5.6.2 形式参数的申明 136
5.6.3 函数调用和参数转换 137
5.7 操作符 137
5.7.1 算术操作符 137
5.7.2 赋值操作符 138
5.7.3 位运算操作符 139
5.7.4 C++指明操作符 140
5.7.5 逗号操作符 140
5.7.6 条件操作符 140
5.7.7 相等操作符 141
5.7.8 逻辑操作符 141
5.7.9 后缀表达式操作符 142
5.7.10 引用/重引用操作符 142
5.7.11 关系操作符 143
5.7.12 sizeof操作符 143
5.7.13 typeid操作符 145
5.7.14 数组下标操作符 146
5.7.15 直接成员选择操作符 146
5.7.16 间接成员选择符 147
5.8 语句 147
5.8.1 块 148
5.8.2 标号语句 149
5.8.3 表达式语句 149
5.8.4 选择语句 149
5.8.5 循环语句 149
5.8.6 跳转语句 150
5.9 预处理指令 151
5.9.1 #(空指令) 151
5.9.2 #define指令 151
5.9.3 #if,#elif,#else,和#endif指令 151
5.9.4 #ifdef和#ifndef指令 152
5.9.5 #error指令 152
5.9.6 #include指令 153
5.9.7 #line指令 153
5.9.8 #pragma summary指令 153
5.9.9 #undef指令 158
5.9.10 预定义宏 159
第6章 软件工程师的利器——工程管理 160
6.1 文件类型 160
6.2 工程管理器 161
6.2.1 文件浏览区 162
6.2.2 工程选择器 162
6.2.3 工具栏 162
6.2.4 状态栏 163
6.2.5 快捷菜单 163
6.3 设置工程选项 164
6.3.1 [Forms]页面 164
6.3.2 [Application]页面 165
6.3.3 [Pascal]页面 167
6.3.4 [Linker]页面 168
6.3.5 [Directories/Conditionals]页面 172
6.3.6 [Version Info]页面 174
6.3.7 [Packages]页面 176
6.3.8 [Compiler)页面 178
6.4 编译和创建工程 182
第7章 程序终结者——合成调试器 183
7.1 有关错误的基本概念 183
7.1.1 编译期错误 183
7.1.2 逻辑错误 183
7.1.3 运行期错误 184
7.2 调试前的准备工作 184
7.2.1 [General]页面 185
7.2.2 [Event Log]页面 185
7.2.3 [Language Exceptions]页面 187
7.2.4 [OS Exceptions]页面 188
7.3 [CPU]窗口 189
7.3.1 反汇编面板 189
7.3.2 内存堆面板 191
7.3.3 机器堆栈面板 192
7.3.4 寄存器面板 193
7.3.5 标志面板 193
7.4 控制程序的运行 194
7.4.1 执行点 194
7.4.2 将程序运行到光标所在位置 194
7.4.3 单步跟踪 195
7.4.4 跟踪执行 195
7.4.5 返回到执行点 196
7.4.6 暂停运行和终止运行 196
7.4.7 重新编译并运行程序 196
7.5 断点 196
7.5.1 设置断点 197
7.5.2 使用断点 198
7.5.3 修改断点的属性 199
7.6 观察变量或表达式的值 200
7.6.1 观察窗口 200
7.6.2 表达式计算 202
7.6.3 Evaluate/Modify的格式指明符 202
7.7 监视数据元素 203
7.7.1 [Inspector]窗口 204
7.7.2 使用[Inspector]窗口 205
7.8 关于多进程调试 206
7.8.1 浏览多进程的线程 206
7.8.2 浏览多进程的模块 207
7.8.3 浏览多线程应用程序的线程状态 207
7.9 调试动态连接库(DLL) 208
第8章 实例之一——文本编辑器 210
8.1 创建工程的目录 210
8.2 创建工程 211
8.3 设计程序的窗体 214
8.3.1 主窗体的设计 214
8.3.2 子窗体的设计 218
8.3.3 程序信息窗口的设计 222
8.4 MDI应用程序的基本技巧 223
8.4.1 MDI的基本属性 224
8.4.2 新窗体的创建 225
8.4.3 菜单的合并 225
8.4.4 窗口的排列和关闭 226
8.5 实现文件基本操作 229
8.5.1 对话框的基本属性和方法 229
8.5.2 新建文件 232
8.5.3 打开文件 233
8.5.4 保存文件 235
8.5.5 打印文件 236
8.5.6 窗体的关闭和程序的退出 237
8.6 实现文本基本编辑功能 242
8.6.1 撤消功能 242
8.6.2 复制、剪切、粘贴、删除和全部选中功能 243
8.6.3 查找与替换 243
8.7 字体处理 245
8.7.1 使用[font Dialog)控件更改字体 245
8.7.2 用组合框实现字体的更改 247
8.8 段落处理 249
8.8.1 实现段落对齐功能 249
8.8.2 实现自动换行功能 250
8.8.3 实现段落标号功能 251
8.9 MDI窗体控件的协调动作 251
8.9.1 工具栏和菜单的协调 252
8.9.2 编辑窗口和工具栏、菜单栏的协调 253
8.9.3 菜单、工具栏、编辑窗口与状态栏的协调 254
8.10 显示程序信息窗口 257
第9章 实例之二——图形图像处理程序 259
9.1 TCanvas对象 259
9.1.1 TCanvas的基本属性 259
9.1.1 TCanvas对象的基本方法 261
9.2 建立工程目录和工程 262
9.3 设计程序的窗体 262
9.3.1 主窗体的设计 263
9.3.2 [newimageform]窗体的设计 267
9.3.3 程序信息窗口的设计 269
9.4 变量的定义 270
9.5 窗体初始化时的工作 270
9.6 图形绘制功能的实现 271
9.6.1 图形工具的管理 271
9.6.2 画线和多义线 273
9.6.3 画椭圆、矩形和圆角矩形 276
9.6.4 铅笔功能 277
9.7 文本的插入 278
9.7.1 文本的编辑和插入 278
9.7.2 更改文本的字体和字号 279
9.8 图形风格的修改 280
9.8.1 修改画笔和刷子的颜色 281
9.8.2 修改画笔风格 282
9.8.3 修改刷子的风格 282
9.9 实现图形的编辑功能 282
9.9.1 矩形选择工具 283
9.9.2 图形的复制 286
9.9.3 图形的剪切 286
9.9.4 图形的粘贴 286
9.9.5 全部图形的清除 287
9.10 图形文件操作 288
9.10.1 新建文件 288
9.10.2 打开文件 290
9.10.3 保存文件 292
9.10.4 打印文件 293
第10章 实例之三——多媒体应用程序 294
10.1 [Animate]控件 294
1n.1.1 属性 294
10.1.2 方法 295
10.2 [Animate]控件实战——动画播放器 296
10.2.1 建立工程和工程目录 296
10.2.2 窗体的设计 296
10.2.3 窗体的初始化 298
10.2.4 打开视频文件 298
10.2.5 视频的播放和停止 299
10.2.6 选择系统动画 300
10.2.7 更改动画的起始帧 300
10.2.8 响应动画的动作 301
10.3 [MediaPlayer]控件 302
10.3.1 属性 303
10.3.2 方法 305
10.3.3 使用[MediaPlayer]的一般步骤 306
10.4 [MediaPlayer]控件实战——媒体播放器 307
10.4.1 创建工程 307
10.4.2 设计窗体 307
10.4.2 打开媒体文件 308
10.5 图像热区(按钮)实例——花卉常识 311
10.5.1 创建工程和工程目录 311
10.5.2 窗体设计 311
10.5.3 变量的定义 313
10.5.4 点击按钮时的事件 313
10.5.5 实现一副图像中的多个热区 315
10.6 实战画面特技 316
10.6.1 设计窗体 316
10.6.2 变量的定义和初始化 317
10.6.3 引起切换的动作 318
10.6.4 页面切换方法的算法和实现 318
第11章 实例之四——数据库应用程序 322
11.1 C++Builder 5的数据库控件 322
11.2 实战之一——快速建立数据库应用程序 323
11.2.1 定制数据库网格 323
11.2.2 使用DBEdit、DBNavigator控件 326
11.2.3 使用[Query]进行编程 328
11.2.4 使用带参数的[Query] 330
11.2.5 使用数据库窗体向导 331
11.3 使用数据字段 331
11.3.1 深入研究TField类的层次结构 332
11.3.2 添加一个计算字段 335
11.4 使用字段来处理数据表格 337
11.4.1 如何进行数据库搜索 337
11.4.2 数据表格中列的计算 340
11.5 设计数据库表格 341
11.5.1 动态建立数据表格 342
11.5.2 建立新的数据表格 343
11.5.3 选择正确的数据表格 344
11.5.4 其他按钮的事件句柄代码 346
11.6 数据库图表 347
11.7 访问SQL服务器 348
11.7.1 InterBase服务器工具 349
11.7.2 将本地数据表格移到远程SQL服务器中 349
11.7.3 使用SQL Builder 350
11.8 数据模块在客户机/服务器编程中的应用 351
第12章 实例之五——系统操作工具 353
12.1 注册表及INI文件概述 353
12.1.1 文件结构 353
12.1.2 与注册表和INI文件有关的对象 355
12.1.3 TRegistryIniFile对象的属性和方法 355
12.2 实战注册表和INI文件——系统文件浏览器 358
12.2.1 建立工程 358
12.2.2 窗体的设计 358
12.2.3 准备工作 361
12.2.4 创建注册表对象和INI文件实例 362
12.2.5 得到多级主键的方法 364
12.2.6 显示键值 366
12.2.7 新建和删除键 368
12.2.8 键值的修改 371
12.2.9 折叠和展开主键——[TreeView]使用技巧 373
12.3 在Windows的任务栏上运行的程序 373
12.3.1 程序的窗体 374
12.3.2 与任务栏图标相关的常量和类型 374
12.3.3 向状态栏增加图标 375
12.3.4 其他事件句柄 377
12.3.5 关于消息的处理 379
第13章 实例之六——Web服务器应用程序 383
13.1 WWW的工作原理 383
13.2 Web服务器应用程序的构架和基本概念 383
13.2.1 Web服务器应用程序的构架 383
13.2.2 Web服务器应用程序的类型 384
13.2.3 统一资源定位器和HTTP请求信息 385
13.2.4 动作项(ActionItem) 386
13.2.5 Web模块和Web调度器 386
13.3 实战Web服务器应用程序 387
13.3.1 准备工作 387
13.3.2 创建工程目录和工程 389
13.3.3 增加动作项 391
13.3.4 用动作项实现静态页面的显示 392
13.3.5 实现动态页面的显示 392
13.3.6 与客户进行交互作用的动态页面 394
13.3.7 利用HTML样板转换用户信息 396
13.4 调试服务器应用程序 399
13.4.1 调试ISAPI和NSAPI应用程序 399
13.4.2 调试CGI和Win-CGI应用程序 401
第14章 实例之七——DLL和包 403
14.1 关于DLL和包的话题 403
14.1.1 什么是DLL和包 403
14.1.2 包和DLL的使用时机 404
14.2 实战DLL——共享的About窗口 404
14.2.1 建立DLL工程 405
14.2.2 了解连接、名字修饰和调用约定 407
14.2.3 定义输出接口函数 408
14.2.4 DLL的编译和创建 409
14.2.5 静态载入DLL 410
14.2.6 动态载入DLL 412
14.3 定制自己的包 412
14.3.1 建立运行期包的工程 413
14.3.2 增加运行期包的单元 414
14.3.3 修改需要包需要输出的函数 415
14.3.4 编译运行期包 416
14.3.5 在应用程序中调用运行期包中的函数 416
14.3.6 建立设计期包的工程 418
14.3.7 向设计期包中增加控件 418
14.3.8 编译设计期包 420
14.3.9 安装设计期包 420
第15章 实例之八——定制控件 422
15.1 控件 422
15.2 创建新控件的基本方法 423
15.2.1 使用控件向导创建控件 423
15.2.2 用代码创建一个控件 425
15.2.3 安装控件前的检查 427
15.2.4 修改一个已有的控件 428
15.3 实战之一——创建新的[Shape]控件 431
15.3.1 创建和注册控件 431
15.3.2 使继承的属性公开化(Published) 432
15.3.3 增加控件的图形处理能力 433
15.3.4 重载构造函数和析构函数 434
15.3.5 使画笔和刷子公开化 435
15.3.6 画控件的形状 438
15.3.7 使绘图功能更精炼 439
15.4 实战之二——创建一个数据敏感控件 441
15.4.1 创建并注册控件 441
15.4.2 增加ReadOnly属性 441
15.4.3 允许用户进行必要的更新 443
15.4.4 增加数据连接 444
15.4.5 数据改变的响应 447
15.4.6 创建可编辑的数据敏感控件 448
第16章 发布您的应用程序 453
16.1 关于应用程序文件的区分和处理 453
16.1.1 包文件的处理 453
16.1.2 ActiveX控制的处理 453
16.1.3 辅助程序的处理 454
16.1.4 DLL的位置 454
16.2 关于发布数据库应用程序的要点 454
16.2.1 提供数据库引擎 454
16.2.2 BDE的安装 455
16.1.3 关于发布SQL连接的要点 455
16.2.4 关于多级分布式应用程序服务(MIDAS)的发布要点 456
16.3 发布Web应用程序 457
16.4 让程序运行在不同的Windows版本下 457
16.5 制作安装程序实战 457
16.5.1 建立安装程序制作工程 458
16.5.2 设置可视化设计 459
16.5.3 指定C++Builder 5的特定安装对象 460
16.5.4 指定应用程序的组件和文件 462
16.5.5 设置安装程序的对话框 465
16.5.6 设置安装程序对注册表的修改 466
16.5.7 指定文件夹和图标 468
16.5.8 创建磁盘文件 469
16.5.9 最后的工作 470