第1章 C++Builder 4深入剖析 1
1.1 C++Builder——伟大的开发工具 3
1.2 VCL高级话题 6
1.2.1 深入TObject类 6
1.2.2 深入TApplication类 10
1.2.3 深入TForm类 13
1.2.4 TMetaClass和类引用 16
1.3 抽象数据类型 16
1.3.1 链表(TList) 17
1.3.2 字符串(AnsiString) 22
1.3.3 集合(Set) 23
1.3.4 流(TStream) 25
1.4 使用C++Builder 4的VCL增强 26
1.4.1 C++Builder 4的新特点 26
1.4.2 使用TActionList和TMonthCalender组件 29
1.4.3 停驻技术编程 32
1.4.4 动态数组 35
第2章 功能齐全的多文档书写器——高级文本处理 37
2.1 文本编辑组件的高级用法 39
2.1.1 TEdit组件和TMaskEdit组件 39
2.1.2 TMemo组件和TRichEdit组件 41
2.2.1 多文档接口与MDI应用程序 43
2.2 多文档界面(MDI)和多页面界面(MPI)技术 43
2.2.2 多页面界面MPI 44
2.3 实例创建分析 46
2.4 创建MDI的编辑环境 47
2.4.1 主窗体和子窗体界面 48
2.4.2 菜单融合处理和窗体布局控制 49
2.5 基本文本编辑功能的实现 51
2.5.1 文档的打开、存盘、关闭和打印 51
2.5.2 剪贴板编辑功能 54
2.6.1 字体和段落格式控制 56
2.6 字体格式控制、查找与替换 56
2.6.2 查找与替换 60
2.7 实现高级功能 64
2.7.1 历史文件列表菜单 64
2.7.2 当前光标所在行、列数的报告 67
2.7.3 实现MDI父窗体的背景贴图 68
第3章 完整的文件管理器——文件操作和文件流 70
3.1 C++Builder的文件操作支持 72
3.1.1 建立、打开和关闭文件 73
3.1.2 文件的读写操作 74
3.1.3 用于文件操作的可视化组件 77
3.2 实例创建分析 79
3.3 界面风格:TTreeView和TListView 80
3.3.1 树视图组件TTreeView 80
3.3.2 列表视图组件 83
3.3.3 创建范例程序界面 84
3.4 文件管理和浏览 85
3.4.1 初始化工作 85
3.4.2 树视图的组织和显示 86
3.4.3 列表视图的组织和显示 88
3.4.4 用户浏览命令的相应 92
3.5 实现文件操作功能 94
3.5.1 文件的拷贝、剪切、删除 95
3.5.2 Win32风格文件重命名的实现 97
3.5.3 文件属性的检视与修改 98
3.6 文件流和内存流 100
3.6.1 文件流(TFileStream类与THandleStream类) 100
3.6.2 内存流(TMemoryStream类) 101
3.6.3 其他流式对象 103
3.7 文件相关的高级话题 105
3.7.1 文件加锁和解锁 105
3.7.2 Shell API 107
第4章 可与ACDSee媲美的BCBSee32——深入图像文件编程 113
4.1.1 Windows图形设备接口 115
4.1 图像显示技术 115
4.1.2 TImage组件 116
4.2 现实图形对象 118
4.2.1 TGraphic类 118
4.2.2 TBitmap类 119
4.2.3 Tlcon类和TMetafile类 120
4.3 使用和控制JPEG格式图像 123
4.3.1 功能强劲的TJPEGImage类 123
4.3.2 TJPEGImage应用示例 125
4.4 实例创建分析 127
4.5.1 创建程序界面 128
4.5 创建程序界面及浏览窗体部分的实现 128
4.5.2 浏览系统(Browser)实现 129
4.5.3 预览显示处理 132
4.6 实现观察窗体部分 133
4.6.1 为图像量身定做窗体 133
4.6.2 Viewer窗体中的图像浏览、幻灯功能 135
4.6.3 全屏显示和放大、缩小显示 136
4.7 图像格式转换和图像打印 138
4.7.1 将图像转换为Bitmap格式 138
4.7.2 将图像转换为JPEG格式 140
4.7.3 图像打印输出 141
4.8.1 设置墙纸 143
4.8 实现特色功能 143
4.8.2 放大镜的实现 144
第5章 图像编辑软件BCB画板——数字图像处理和图像编辑 147
5.1 TCanvas画布类 149
5.1.1 TCanvas类的重要属性和方法 149
5.1.2 TPen、TBrush和TColor 151
5.1.3 重画问题 153
5.2 实例创建分析 154
5.3.1 创建应用程序界面 155
5.3 图像编辑程序框架 155
5.3.2 使用光标 156
5.3.3 工具箱和颜料盒的实现 158
5.4 图像绘制——画图功能的实现 159
5.4.1 铅笔、画刷和橡皮 160
5.4.2 颜料桶和喷枪 162
5.4.3 放大缩小图像、绘制文字 163
5.4.4 规则图形的绘制 164
5.5 区域选择和图像的剪贴、复制 168
5.5.1 区域选择的实现 168
5.5.2 应用剪贴板 169
5.6.1 新建、打开、存储文件 172
5.6 新建、打开、存储文件及简单图像处理 172
5.6.2 尺寸设置、反色及图像打印 174
5.7 图像处理高级话题 176
5.7.1 提升速度 176
5.7.2 图像色彩调整 179
第6章 多样Windows屏幕保护程序——动画技术与图形技巧显示 185
6.1 Windows动画技术 187
6.1.1 双缓冲区(Double Buffer) 187
6.1.2 TPaintBox组件和TTimer组件 187
6.1.3 生成高性能动画 188
6.1.4 掩图技术 191
6.2 实例创建分析 193
6.3 实现屏幕保护程序框架 194
6.3.1 获取并处理应用程序参数 194
6.3.2 消息映射 195
6.4 动画和特技显示 199
6.4.1 屏保的动画部分 199
6.4.2 技巧显示 203
6.4.3 音乐播放功能 207
6.5 屏保设置部分的实现 208
6.5.1 存取文件列表 209
6.5.2 使用注册表 209
6.6.1 桌面精灵动画 213
6.6 动画技术的其他话题 213
6.6.2 逐帧动画 215
6.6.3 多媒体定时器 216
6.6.4 高级动画 218
第7章 完美的多媒体播放器——深入多媒体技术 219
7.1 多媒体技术探秘 221
7.1.1 多媒体技术的核心 221
7.1.2 Windows操作系统的多媒体服务 221
7.1.3 C++Builder的多媒体编程 223
7.2 多媒体相关组件和多媒体编程 225
7.2.1 多媒体TMediaPlayer组件 225
7.2.2 动画组件TAnimate 228
7.2.3 多媒体编程的一般原则 229
7.3 实例创建分析 230
7.4 媒体播放部分的实现 231
7.4.1 基本媒体播放控制 231
7.4.2 视频播放相关处理 234
7.5 其他关键问题处理 236
7.5.1 数字显示实现——使用资源文件 236
7.5.2 播放时间进度显示 238
7.5.3 实现无标题面板的拖动 239
7.5.4 实现音量调整功能 240
7.6.1 TMediaPlayer组件 241
7.6 MCI与高级多媒体性能 241
7.6.2 命令消息接口与mciSendCommand语言 242
7.6.3 播放文件和录制声音 244
7.7 底层多媒体API 247
7.7.1 RIFF文件 247
7.7.2 使用低级API实现Wave播放 248
第8章 俄罗斯方块游戏——VCL游戏编程与实用技术 252
8.1 实例创建分析 254
8.2 实现俄罗斯方块程序的核心部分 256
8.2.1 程序策划 256
8.2.2 数据处理和定制窗体 257
8.3.1 核心工作模块 260
8.3 工作模块具体实现 260
8.3.2 其他问题 270
8.4 实用技巧 271
8.4.1 创建帮助系统 272
8.4.2 使用INI文件 277
8.4.3 溅出屏幕(Splash Screen) 279
8.5 为游戏程序增加手柄支持 281
第9章 快速文件处理工具——进程和多线程技术 285
9.1 进程和进程创建 287
9.1.1 进程存储 287
9.1.2 进程创建方法 288
9.1.3 后台进程:制作Windows 版的ARJ工具 290
9.2 Win32多线程技术 292
9.2.1 C++Builder中实现多线程 293
9.2.2 TThread类 294
9.3 实例创建分析 295
9.4 实现多线式文件处理工具的技术要点 296
9.4.1 主界面线程 296
9.4.2 查找线程 298
9.4.3 与VCL同步 300
9.4.4 线程的终止 301
9.5.1 优先级和调度 302
9.5 多线程调度和线程通信 302
9.4.5 拷贝线程 302
9.5.2 TEvent与线程通信 304
9.6 多线程高级话题 306
9.6.1 对线程计时 306
9.6.2 线程本地存储 307
9.6.3 线程同步问题 308
第10章 HTML浏览器——Internet相关技术 315
10.1 HTTP协议和HTML组件 317
10.1.1 使用HTML组件 317
10.1.2 使用NMHTTP组件 320
10.2.1 CoolBar工具栏 324
10.2 创建BCB WebBrowser浏览器程序 324
10.2.2 实现Web页的显示和浏览功能 327
10.2.3 实现辅助功能 330
10.3 BCB WebBrowser的第二版本 333
10.3.1 安装ActiveX控件 333
10.3.2 使用WebBrowser控件 334
10.4 文件传输协议和邮件协议编程 335
10.4.1 使用文件传输协议(FTP) 335
10.4.2 邮件协议和其他特定协议 339
第11章 网页留言簿系统——服务器端Web编程 341
11.1.1 使用PageProducer组件 343
11.1 生成HTML页面 343
11.1.2 在Web页发布数据库 345
11.2 创建动态Web内容 349
11.2.1 标准CGI编程 349
11.2.2 利用WebModules技术创建服务器程序 351
11.2.3 实现网站计数器程序 354
11.3 创建基于ISAPI的留言簿系统 356
11.3.1 ISAPI编程概述 357
11.3.2 在C++Builder中创建ISAPIDLL 358
11.4 实现留言簿填写模块 359
11.4.1 获取用户输入信息 359
11.4.2 与数据库连接 361
11.5 实现留言簿浏览模块 363
11.5.1 显示留言列表 364
11.5.2 显示留言簿详细内容 366
11.6 关于服务器端编程的进一步讨论 367
11.6.1 QueryTableProducer组件 367
11.6.2 在线考试/问卷系统 368
11.6.3 聊天室系统 369
第12章 网络五子棋——WinSock编程 371
12.1 WinSock编程概述 373
12.1.3 操作Socket对象传输数据 374
12.1.1 建立服务器端Socket 374
12.1.2 建立客户端Socket 374
12.2 实例创建分析 377
12.3 实现网络五子棋程序 378
12.3.1 游戏前期工作 379
12.3.2 实现联机游戏系统 382
12.3.3 简单的辅助功能 388
12.4 WinSock编程高级话题 388
12.4.1 流类数据传输 388
12.4.2 利用WinSock定制协议 389
12.5 使用TPowerSock组件类 393
12.4.3 在阻塞状态下传输数据 393
12.5.1 TPowerSock组件 394
12.5.2 TNMStrm和TNMStrmServ组件 395
第13章 图像时钟组件——创建VCL组件 398
13.1 C++Builder组件和组件包 400
13.1.1 扩展VCL组件 400
13.1.2 创建组件的原则 400
13.1.3 组件包 401
13.1.4 创建一个简单的组件 401
13.2 组件编程 405
13.2.1 创建组件的起点 405
13.2.2 链接图像组件 407
13.2.3 编写组件代码 409
13.2.4 创建事件 411
13.3 创建图像时钟组件 413
13.3.1 为组件增加枚举类型属性 416
13.3.2 绘制时钟 417
13.3.3 增加TPersistent属性 421
13.3.4 增加新创建的事件 422
13.3.5 组件面板位图 424
13.3.6 测试TCoolClock组件 425
13.4 创建非可视化组件 426
13.4.1 创建TOpenDirDialog组件 427
13.4.2 使用非可视化组件 429
第14章 系统环境监视程序——DLL及应用Windows API编程 431
14.1 关于DLL 433
14.1.1 在C++Builder中创建DLL 434
14.1.2 使用DLL实现窗体重用 436
14.2 实例创建分析 438
14.2.1 理解Windows API 438
14.2.2 程序分析 439
14.3 编写任务栏指示区图标支持 440
14.4 利用API实现特殊风格的标题栏 443
14.4.1 自绘标题栏 443
14.4.2 实现标准标题栏功能 446
14.5 窗口与程序 447
14.5.1 获得当前所有窗口 447
14.5.2 动态汉化窗口菜单 449
14.5.3 获得当前激活的进程 452
14.5.4 查看/删除系统启动程序 454
14.5.5 杀除进程 456
14.6 系统与设备 457
14.6.1 获取和设置驱动器信息 458
14.6.2 获取内存资源信息 461
14.6.3 获取设备信息与动态调整显示 463
14.6.4 获取和设置系统环境变量 466
第15章 BCB抓图大师——高级DLL技术和钩子函数 468
15.1 DLL彻底研究 470
15.1.1 动态加载DLL 470
15.1.2 DLL入口点及生存周期 472
15.2 插件(Plug-In)技术 474
15.2.1 插件技术分析 474
15.2.2 插件程序实例 475
15.3 实例创建分析 479
15.4 钩子(Hook)函数 480
15.4.1 Windows的钩子函数 480
15.4.2 使用钩子函数的问题 482
15.4.3 键盘钩子 483
15.5 进程间数据共享 486
15.5.1 利用内存映像文件共享数据 487
15.5.2 在DLL中实现存取全局内容代码 488
15.6 截图程序的具体实现 490
15.6.1 全局存取内存区域的数据组织 490
15.6.2 抓图设置处理 493
第16章 COM对象、自动化和XCoolClock控件——组件对象模型(COM) 495
16.1 理解COM接口及其实现 497
16.1.1 关于COM基本概念 497
16.1.2 在DLL实现类 499
16.2 实现COM对象 502
16.2.1 COM的服务程序类型 503
16.2.2 创建COM对象 503
16.2.3 创建客户程序 508
16.3 几个关键问题 510
16.3.1 GUID、CLSID和IID 510
16.3.2 IUnknown接口 511
16.3.3类工厂(ClassFactory) 512
16.4 IDispatch、双重接口及dispinterface 512
16.4.1 创建Automation对象 512
16.4.2 创建调用Automation对象的客户程序 516
16.4.3 IDispatch和双重接口 520
16.5 实现Word和Excel自动化 521
16.5.1 使用Variant进行自动化 522
16.5.2 自动化Excel 526
16.5.3 内部自动化应用程序 529
16.6 Internet Explorer控件的高级用法 532
16.6.1 类型库(Type Library) 532
16.6.2 BCB WebBrowser的第三版本 534
16.7 AtcriveX技术和创建ActiveX控件 536
16.7.1 创建TCoolClock和ActiveX版本 537
16.7.2 为ActiveX控件添加属性 540
16.7.3 为ActiveX控件编写属性页 542
16.7.4 ActiveForm方法 544
第17章 DirectX下的Block游戏——DirectX编程 548
17.1 DirectX技术及DirectX编程概述 550
17.1.1 DirectX的组成 550
17.1.2 DirectX编程方式 551
17.2 使用DirectDraw 552
17.2.1 强劲的DirectDraw技术 552
17.2.2 建立简单的DirectDraw程序 552
17.2.3 DirectDraw编程问题 556
17.3 实例创建分析 560
17.3.2 处理位图资源 561
17.3.1 程序架构 561
17.3.3 Block工程说明 562
17.4 具体实现Block游戏 562
17.4.1 深入DirectDraw:调色板和位图对象 563
17.4.2 构造TRing类 绘制DirectDraw位图 565
17.4.3 游戏的启动部分 568
17.4.4 游戏进行部分 569
17.4.5 实现规则 574
17.4.6 最后的工作——释放对象 576
17.5 DirectX技术的其他部分 578
17.5.1 使用Direct3D 578
17.5.2 使用DirectSound 581