《Borland C++ Builder应用开发大全》求取 ⇩

第1部分 入门指南1

1

第1章 C++Builder导论1

1.1 本书面向的对象1

1.2 如何阅读本书2

1.2.1 本书的指导思想2

1.2.2 分布式计算3

1.3 新的调试工具4

1.3.1 调试一个DLL8

1.3.2 在EXE文件内部调试DLL9

1.3.3 在DLL中设置断点以及其他的技巧10

1.3.4 与C++Builder 1.0版本的区别11

1.4 VCL的概念12

1.4.1 可视化组件的时代12

1.4.2 组件的优点12

1.4.3 核心技术:组件、属性、委托模型13

1.5 为什么使用VCL14

1.5.1 保留OWL和MFC中的代码15

1.6 准备工作15

1.6.1 版权说明15

1.6.2 代码中的错误16

1.6.3 有关引用Delphi的问题16

1.7 小结17

1.6.5 配套的光盘17

1.6.4 优化代码17

第2章 事件18

2.1 事件:C++Builder委托模型18

2.1.1 委托和Windows API函数18

2.1.2 在C++Builder中创建事件19

2.1.3 委托与继承19

2.1.4 免协议编程(Contract-Free Programming)20

2.1.5 委托模型的小结20

2.2 使用委托模型20

2.2.1 C++Builder的事件:EVENTS1程序21

2.2.2 处理OnClick事件22

2.2.3 处理MouseDown事件23

2.2.4 响应KeyDown事件24

2.2.5 处理OnKeyPress事件24

2.3 了解事件24

2.3.1 为什么Windows是面向事件的26

2.4 从事件中提取信息26

2.4.1 使用集合跟踪消息27

2.4.2 SETEXP程序27

2.4.3 使用TShiftState29

2.4.4 并集、交集和差集30

2.5 EVENTS2程序:事件的详细内容31

2.5.1 移动鼠标事件的详细情况36

2.5.2 捕捉虚拟键37

2.5.3 直接处理事件38

2.6 MENUDEF程序:菜单、WM_COM_MAND和WndProc41

2.6.1 了解MENUDEF程序41

2.6.2 获取菜单项的ID值45

2.6.3 捕捉WM_COMMAND消息46

2.6.4 将WndProc作为程序的主函数47

2.7 小结48

第3章 异常50

3.1 如何使用异常50

3.2 有关异常的理论51

3.2.1 异常的作用51

3.2.3 整个程序是一个try模块52

3.2.2 缺省的异常处理程序52

3.2.4 未处理的异常所造成的危险53

3.3 异常类53

3.4 异常的基本语法55

3.4.1 一个简单的try..catch模块57

3.4.2 将异常与出错字符串相对应58

3.4.3 查找出错的位置59

3.4.4 异常处理的小结60

3.5 发送异常61

3.5.1 发送一个整数63

3.5.2 发送VCL异常类64

3.5.3 了解VCL异常类65

3.5.4 多重catch语句66

3.5.5 在通用的catch语句中捕获异常67

3.6 创建和生成自己的异常68

3.7 再次发送异常72

3.8 异常和析构函数73

3.9 流、异常和释放内存78

3.10 代替缺省的异常处理程序81

3.11 使用资源跟踪出错字符串84

3.12 小结90

第4章 C++类和可视化组件模型91

4.1 多重继承91

4.1.1 处理其他类型的继承92

4.2 不使用多重继承的类库设计93

4.2.1 输出流93

4.2.2 一般性和特殊性94

4.2.3 多重继承和多文档94

4.2.4 如何使用多重继承96

4.3 异常处理96

4.3.1 操作系统的异常96

4.3.2 混合异常模型98

4.3.3 VCL异常98

4.4 运行时的类型信息99

4.5 纯虚拟函数101

4.6 接口与实现102

4.7 静态分配104

4.8 构造对象106

4.9 小结106

第2部分 关系数据库107

第5章 数据库基础知识107

5.1 建立数据库工具108

5.2 数据库基础知识108

5.3 命名和结构约定110

5.4 使用TQuery对象开发SQL112

5.4.1 数据模块112

5.5 TDataModule的用途115

5.5.1 TDataModule的习惯用法116

5.6 Object Repository117

5.7 Database Explorer118

5.8 使用SQL Monitor119

5.9 了解BDE和别名121

5.10 别名123

5.11 TCP/IP安装的一些说明123

5.12 与ODBC的连接126

5.13 TBatchMove组件128

5.14 小结129

第6章 使用TTable和TDataSet130

6.2 了解修订后的TDataSet类131

6.1 可视化数据库控件与非可视化数据库控件131

6.2.1 TDataSet的主要子类132

6.2.2 数据集(Dataset)的含义132

6.3 TDataSet的核心方法133

6.3.1 打开和关闭数据集133

6.3.2 导航例程134

6.3.3 检查数据集的开始或结束部分136

6.3.4 通过MoveBy方法导航记录138

6.4 字段(Fields)138

6.4.1 字段对象的常用方法139

6.4.2 访问字段名139

6.4.4 FIELDOBJECT样本程序140

6.4.3 访问字段内容140

6.4.5 FIELDER样本程序141

6.5 修改数据142

6.5.1 编辑数据集的重要方法142

6.5.2 编辑和寄送记录的编程问题143

6.5.3 插入、添加和删除记录145

6.6 查找147

6.6.1 使用SetKey或FindKey进行查找147

6.6.2 使用SetKey和GotoKey147

6.6.3 使用FindKey和FindNearest149

6.6.4 按辅助索引查找149

6.7 范围的确定150

6.7.1 选择记录的范围150

6.6.5 使用模糊查找150

6.7.2 RANGER样本程序151

6.7.3 RANGER2样本程序153

6.8 过滤153

6.8.1 OnFilterRecord事件153

6.8.2 FILTER样本程序154

6.9 书签155

6.10 使用Refresh(刷新)函数156

6.11 关于TDataSet和TTable更多的内容157

6.12 一对多关系:链接指针(Linked Cursors)157

6.13 TDataSource基础知识159

6.13.1 检查数据集的状态161

6.14 跟踪数据集的状态163

6.15 使用TDatabase166

6.16 不使用可视化工具创建数据库167

6.17 小结172

第7章 SQL和TQuery对象174

7.1 SQL属性175

7.1.1 使用TQuery对象编程175

7.1.2 从磁盘上装入通配符查询176

7.2 TQuery和参数178

7.2.1 编写用于参数化查询的SQL语句178

7.2.2 编写参数化查询代码178

7.2.3 参数化查询例子EASYSQL2180

7.2.4 采用多连接变量查询182

7.3 SQL属性和Format函数184

7.3.1 PARAMSI程序中的Session对象185

7.4 使用TQuery建立一对多关系188

7.5 建立多个表之间的连接190

7.6 RequestLive属性192

7.7 参数化查询和连接语句193

7.8 ExecSQL、Delete和Insert语句194

7.8.1 使用SQL删除记录195

7.8.2 使用SQL插入记录196

7.9 特殊的TQuery属性197

7.10 SQL的一些有趣内容197

7.11 小结200

第8章 使用字段对象201

8.1 Fields Editor201

8.1.1 启用Fields Editor202

8.1.2 计算字段(Calculated Field)205

8.1.3 Columns属性编辑器207

8.2 查找字段(Lookup Fields)207

8.2.1 使用Lookup程序209

8.2.2 有关计算字段215

8.2.3 有关查找字段215

8.2.4 TDBLookupComboBox和TDBLookupListBox216

8.2.5 在Lookup程序中插入和编辑数据216

8.3 程序运行状态下的TDBGrid217

8.3.1 在程序运行状态下控制TDBGrid的Options属性226

8.3.2 在程序运行状态下显示DBGrid的选项228

8.4 使用TDBGrid列229

8.4.1 改变TDBGrid对象中的标题230

8.4.2 改变TDBGrid对象中的一个单独列231

8.4.3 改变TDBGrid对象中行的颜色232

8.4.4 改变列的宽度232

8.4.5 隐藏或移动TDBGrid中的列233

8.4.6 在程序运行状态下移动列235

8.5 多记录对象235

8.6 小结236

第9章 了解关系数据库238

9.1 关系数据库入门238

9.1.1 关系数据库模型的优点239

9.1.2 简单的集合逻辑:关系数据库的基础240

9.1.3 在DBD或Explorer中显示索引和关键字241

9.2 非数字化规则:为每个表创建一个主码245

9.2.1 一对多关系:数据和索引246

9.2.2 使用主码247

9.2.3 使用辅助索引和外码248

9.2.4 关键字是数据库中的重点249

9.3 在BCDEMOS数据库中浏览关键字和索引249

9.3.1 使用Database Desktop创建索引253

9.3.2 使用Database Desktop创建主码和外码254

9.4 为什么要使用参照完整性255

9.5 一对多关系:代码256

9.5.1 关系数据库和Join257

9.5.2 Join和QBE258

9.5.3 使用SQL Builder261

9.6 应该使用什么样的数据库262

9.7 小结263

第10章 实际的平面文件数据库264

10.1 综述264

10.2 本章中的样本程序264

10.3 设计一个应用程序265

10.3.1 定义数据265

10.3.2 设计程序:索引268

10.4 设计程序的外观270

10.5 查找:使用Category字段273

10.6 为程序建立命令结构275

10.7 检测应用程序的“草图”276

10.8 创建最终的程序277

10.9 设置只读模式293

10.10 数据排序296

10.11 数据搜索297

10.12 数据过滤298

10.13 字段的标记299

10.14 颜色设置302

10.15 使用注册表305

10.16 导航注册表312

10.17 从Run菜单下运行程序314

10.18 在ADDRESS2程序中使用注册表315

10.19 剪贴板:剪切、复制和粘贴316

10.20 小结317

第11章 会话和实际的关系数据库318

11.1 实际的数据318

11.3 KDADDS程序的代码323

11.3.1 使用KDADD程序332

11.3.2 设置KDADD程序的索引333

11.3.3 搜索记录335

11.3.4 插入数据和取消操作335

11.3.5 删除数据:第一次查看程序的数据模块336

11.3.6 数据模块:级联删除(Cascading Deletes)339

11.3.7 数据模块:整体寄送340

11.3.8 在字符串资源中放置出错字符串341

11.3.9 About框342

11.4 使用KDADDEXPLORE程序343

11.4.1 使用TSession343

11.4.2 KDADDEXPLORE程序的代码345

11.4.3 使用TTreeView显示系统中的数据库352

11.4.4 扩充TTreeView的节点353

11.4.5 在TTreeView中添加可用表的列表354

11.4.6 查找索引和字段355

11.4.7 显示别名和别名参数356

11.5 迁移数据、TBatchMove、临时表和NULL字段357

11.6 小结358

第12章 使用本地InterBase服务器359

12.1 关于IterBase359

第3部分 客户机/服务器和多层数据库359

12.2 数据库与人才需求360

12.3 配置本地InterBase360

12.4 配置InterBase别名363

12.5 创建数据库365

12.6 用WISQL浏览数据库367

12.7 事务处理368

12.8 高速缓冲更新(cached updates)372

12.9 多对多关系376

12.10 安全性与InterBase服务器管理器384

12.10.1 定义表的访问权限385

12.10.2 通过服务器管理器备份表385

12.11 小结386

第13章 高级InterBase概念387

13.1 MUSIC程序388

13.2 设计MUSIC程序388

13.2.1 创建数据库方案389

13.2.2 改变表:Null或Not to Null390

13.2.3 更名已有表中的字段391

11.2 检查关系地址程序391

13.2.4 创建Blob字段392

13.2.5 主码与外码392

13.3 创建MUSIC表的索引395

13.4 生成器、触发器与存储过程396

13.4.1 不要在激活的索引中使用触发器397

13.4.2 使用存储过程398

13.4.3 C++Builder端的存储过程398

13.5 服务器端规则与客户端规则400

13.6 MUSIC程序口综述401

13.7 使用子窗体401

13.8 MUSIC程序代码405

13.8.1 使用MUSIC程序408

13.8.2 屏蔽口令:TDatabase对象409

13.8.3 FormCreate事件409

13.9 使用MUSIC程序数据413

13.9.1 查找413

13.9.2 查询数据库问题:初级SQL414

13.9.3 不返回数据集的存储过程418

13.9.4 浏览确定范围内的数据419

13.10 小结420

第14章 快速报表、图形与电子报表工具421

14.1 Windows打印综述421

14.2 QuickReport基础422

14.3 行、列、组和一对多423

14.4 使用样本程序424

14.5 ADDRESS2样本程序424

14.5.1 ADDRESS2:打印地址424

14.5.2 ADDRESS2:对报表中数据进行分组427

14.6 MUSIC程序的报表428

14.6.1 一对多报表429

14.6.2 使用查询进行报表分组430

14.7 打印窗体432

14.7.1 Tprinter:打印文本、图形和位图433

14.7.2 打印图形441

14.7.3 打印位图442

14.8 小结443

第15章 客户机与服务器之间的连通性444

15.1 连接到服务器444

15.2 使用Microsoft SQL 6.5445

15.2.1 创建一个MS SQL别名446

15.2.2 访问你的数据库447

15.2.3 将一个Paradox数据库程序转换到MS SQL449

15.3 使用Oracle 7.32452

15.3.1 访问你的Oracle数据库453

15.4 使用Informix 7.20455

15.4.1 访问Informix数据库456

15.5 使用Sybase 11.02458

15.6 使用DB2的2.1.2版本460

15.6.1 连接DB2时可能出现的连接错误461

15.6.2 访问你的DB2数据库463

15.7 小结465

第16章 多层数据库设计466

16.1 多层数据库应用程序概述466

16.2 C++Builder和Internet467

16.3 分布式体系的三种类型469

16.4 为什么DCOM会引起争论470

16.5 DCOM是什么470

16.5.1 在Windows 95下运行DCOM服务程序471

16.6.1 应用服务程序474

16.6 将已有的程序转变为多层应用程序474

16.6.2 设置DCOM476

16.6.3 客户应用程序477

16.6.4 VCL对象浏览器程序代码的修改479

16.6.5 发送客户应用程序479

16.7 介绍Active Forms480

16.7.1 建立一个Active Form481

16.7.2 了解OCCACHE484

16.7.3 安装附加文件484

16.8 使用CAB文件和程序包486

16.8.1 有关许可的问题489

16.8.2 使用带有Active Forms的模板489

16.9.2 使用套接字创建Midas Active Form490

16.9 套接字和Active Forms490

16.9.1 关于套接字的概述490

16.9.3 创建基于Midas的Active Form492

16.10 小结494

第4部分 创建组件495

第17章 继承性495

17.1 对象496

17.2 创建简单的对象497

17.2.1 与VCL类特征的区别499

17.3 继承性502

17.3.1 类的引用503

17.4 虚拟方法506

17.4.1 反复设计511

17.4.2 集成:VCL编程的层次515

17.4.3 创建友元对象520

17.4.4 使用集成520

17.4.5 可视窗体继承性522

17.4.6 可视窗体继承性的优点525

17.5 小结526

第18章 封装527

18.1 综述527

18.2 封装527

18.2.1 隐藏数据529

18.2.2 内联方法530

18.3 简单性:一个好的对象设计的秘诀531

18.4 一个具体的实例532

18.4.1 TWidget和其析构函数533

18.4.2 使用Widgets535

18.5 属性542

18.6 流控制类544

18.6.1 从流中读取一组件545

18.7 关于属性的其他内容546

18.7.1 使用StringLists550

18.7.2 用字符串索引数组551

18.7.3 只读属性553

18.7.4 易使人误解的default指示符554

18.8 小结555

第19章 多态性556

19.1 综述556

19.2 多态性556

19.3 多态性的简单例子557

19.4 多态赋值的兼容性558

19.4.1 子对象与父对象赋值的兼容性558

19.4.2 从另一角度看多态性560

19.5 虚拟方法与多态性561

19.5.1 ClassicShapeDemo程序564

19.5.2 使用TCustomControl567

19.6 VCL中的多态性568

19.7 封装的多态性要点综述571

19.8 小结572

第20章 创建已有组件的继承类573

20.1 组件理论573

20.2 创建一个已有组件的继承类574

20.2.1 创建组件576

20.2.2 程序包简介580

20.2.3 组件构造函数580

20.2.4 测试组件581

20.2.5 安装组件582

20.3 扩展Unleash单元583

20.4 从底层创建组件592

20.4.1 时钟组件593

20.5 时钟组件的代码603

20.5.1 时钟的启动604

20.5.2 时钟的绘制604

20.5.3 TColor-Clock对象606

20.5.4 GOLDCLOCK程序607

20.6 为组件创建图标608

20.7 使用API工具608

20.7.1 单一类型的属性编辑器609

20.7.2 类属性编辑器611

20.7.3 类型Class的流属性612

20.7.4 测试DsgnIntf.cpp613

20.7.6 使用组件编辑器614

20.7.5 注册属性编辑器614

20.8 Clock2:扩展组件和属性编辑器616

20.8.1 安装组件626

20.8.2 创建组件编辑器627

20.9 小结629

第21章 程序包631

21.1 什么是程序包631

21.2 程序包如何工作631

21.3 程序包与DLL632

21.4 使用程序包的优点633

21.5 与程序包相关的文件633

21.7 创建程序包635

21.6 安装程序包635

21.7.1 System Tray Icon程序包(TTrayIcon)636

21.7.2 TTrayIcon的属性638

21.8 Scroll Panel程序包(TScrollPanel)650

21.9 小结658

第22章 创建组件659

22.1 仓库659

22.1.1 接口660

22.2 Widgct和Pallet组件的层次679

22.2.1 了解TWidget, TPentium和TPentiumPro681

22.3 Pallet控件683

22.3.1 TDataPallet和拖曳684

22.3.2 TDataPallet和数据库687

22.4 查询数据库689

22.5 查看层次691

22.6 小结692

第5部分 C++ Builder和Internet693

第23章 NetMasters因特网组件693

23.1 Internet简介694

23.1.1 UUCP:历史的回顾694

23.1.2 TCP/IP:历史简介694

23.1.3 以太网(Ethernet):把我们连接起来的硬件平台695

23.1.4 IP:网际协议695

23.1.5 TCP:传输控制协议695

23.2 NetMaster因特网组件简介696

23.1.6 UDP:用户数据报协议696

23.1.7 端口:基本的连接单元696

23.2.1 组件列表697

23.3 例子697

23.3.1 例子1:离线组件698

23.3.2 例子2:简单的调试组件702

23.3.3 例子3:发送和接收数据704

23.3.4 例子4:基于Web的组件707

23.3.5 例子5:新闻、文件和Fingers709

23.3.6 例子6:基于邮件的组件714

23.3.7 例子7:UDP消息717

23.4 小结719

23.3.8 例子中未涉及到的问题719

第24章 WebBroker组件720

24.1 TClientSocket组件721

24.2 TServerSocket组件721

24.3 TWebDispatcher组件726

24.4 TPageProducer组件727

24.5 TQueryTableProducer组件727

24.6 TDataSetTableProducer组件728

24.7 使用WebBroker组件的例子728

24.7.1 运行CGI程序的HTML文件728

24.7.2 创建简单的CGI程序728

24.8 TServerSocket组件的其他用法732

24.8.2 AWChatServer的实现733

24.8.1 AWChatServer的初步设计733

24.8.3 AWChatServer客户程序741

24.9 小结741

第25章 使用WININET创建FTP应用程序742

25.1 准备工作742

25.2 确定FTP在系统中正常运行743

25.3 使用WININET的FTP743

25.3.1 使用InternetOpen745

25.3.2 使用InternetConnect746

25.4 连接以后748

25.5 检索文件750

25.6 向FTP服务器发送文件751

25.7 删除文件752

25.8 建立和删除目录752

25.9 一个简单的FTP控件753

25.10 建立用户自绘(Owner-Draw)的列表框765

25.11 小结769

第6部分 ActiveX、DCOM和OLE770

第26章 Automation770

26.1 关于语言的说明770

26.2 C++ Builder和ATL771

26.3.3 即插即用应用程序772

26.3.2 COM和Windows772

26.3.1 COM的概念772

26.3 COM基础知识772

26.3.4 COM存在的问题774

26.3.5 COM与UNIX775

26.3.6 COM+775

26.4 创建一个简单的COM服务程序和客户程序776

26.4.1 创建一个简单的服务程序776

26.4.2 建立一个简单的客户程序780

26.5 接口787

26.5.1 IDispatch、双重接口和Dispinterfaces789

26.5.2 VTables790

26.6 类型库(Type Libraries)791

26.6.1 什么是类型库792

26.6.2 创建类型库793

26.6.3 使用coclass794

26.6.4 使用接口795

26.6.5 定义接口的实现部分795

26.6.6 合法的Automation类型799

26.7 忽略TNoParams中的参数800

26.8 有关注册的问题800

26.9 对数据进行自动编组802

26.10 使用WideStrings803

26.11 从一个CoClass获取两个或多个接口804

26.11.1 调用CoCreateInstance812

26.12 小结813

第27章 DCOM和OLEnterprise814

27.1 一个简单的DCOM客户和服务器814

27.1.1 建立DCOM客户820

27.1.2 使用远程对象825

27.2 变量数组826

27.2.1 什么是变量数组826

27.2.2 对数组的锁定和解锁828

27.2.3 一个变量数组的样本程序830

27.3 权衡远程数据集833

27.3.1 ServerData程序841

27.3.2 GETDATA:远程数据集的客户程序845

27.4 程序数据和Automation数据853

27.5 OLEnterprise的基本概念859

27.5.1 OLEnterprise的使用对象860

27.5.2 使用OLEnterpris861

27.5.3 OLEnterprise故障排除862

27.5.4 RPCSS863

27.5.5 OLEnterprise和Midas867

27.5.6 OLEnterprise小结867

27.6 小结868

第28章 创建新的ActiveX组件869

28.1 ActiveX控件869

28.2 C++Builder 3中用来创建ActiveX控件的工具869

28.2.2 OLE的功能870

28.2.1 OLE的定义870

28.2.3 OLE SDK,OCF和MFC872

28.2.4 Active Templata Library(ATL)和ATLVCL872

28.3 准备工具873

28.3.1 OLE包容器各不相同873

28.3.2 OLE的确不错,但有时结果却不可预知873

28.4 使用传统方法建立ActiveX控件874

28.4.1 步骤1:创建GUID874

28.4.2 步骤2:编写.IDL文件874

28.4.3 步骤3:运行MIDL.EXE877

28.4.4 步骤4:编写.REG文件877

28.4.5 步骤5:在包容器插入的对象列表中查看OCX880

28.4.6 步骤6:综述882

28.4.7 步骤7:准备头文件883

28.4.8 步骤8:编写类工厂886

28.4.9 步骤9:初始化对象888

28.4.10 步骤10:回答QueryInerface890

28.4.11 步骤11:从剪贴板获取数据891

28.4.12 步骤12:激活对象894

28.4.13 步骤13:建立控件窗口896

28.4.14 步骤14:实现Odds和Ends899

28.4.15 步骤15:在窗体中放入OCX控件901

28.5 通过VCL组件创建ActiveX控件901

28.5.1 Object Repository902

28.5.2 创建ActiveX控件903

28.6 使用ATL编写ActiveX控件906

28.6.1 ATL的优点906

28.6.2 ActiveX线程模型906

28.6.3 建立Microsoft ATL样本907

28.7 使用ATL创建OCX909

28.7.1 ATL与VCL的区别909

28.7.2 创建项目910

28.7.3 添加DllEntryPoint和导出COM函数910

28.7.4 添加类库912

28.7.5 添加ATL头文件915

28.7.6 添加继承来的OLE接口916

28.7.7 添加对QueryInterface的支持918

28.7.8 添加消息映射920

28.7.9 添加属性920

28.7.10 添加事件920

28.7.11 添加注册表的支持921

28.7.12 控件的初始化921

28.7.13 添加自定义方法921

28.7.14 添加.RC文件927

28.7.15 添加.RGS文件928

28.7.16 建立ActiveX控件928

28.8.1 使用TD32调试OCX929

28.8 调试ActiveX控件929

28.8.2 使用C++ Builder的集成调试器调试OCX930

28.8.3 将C++ Builder3配置为即时调试器935

28.9 小结936

第7部分 图形937

第29章 VCL的图形类937

29.1 Windows的GDI和VCL的TCanvas937

29.1.1 什么是GDI938

29.1.2 VCL能使你的图形编程更简单938

29.2 使用TCanvas939

29.3 使用画刷(Brushes)939

29.3.1 TBrush::Color属性940

29.3.2 TBrush::Style属性940

29.3.3 TBrush::Assign方法942

29.4 使用画笔(Pens)943

29.4.1 TPen::Style属性943

29.4.2 TPen::Width属性943

29.4.3 TPen::Mode属性943

29.5 使用字型(Fonts)944

29.5.1 TPont::Height属性945

29.5.2 TPont::Size属性945

29.5.3 TPont::Name属性946

29.5.4 TPont::Style属性946

29.5.5 旋转字型947

29.8 TCanvas::CopyMode属性948

29.7 TCanvas::ClipRect属性948

29.6 TCanvas::PenPos属性948

29.9 使用TCanvas::Pixels949

29.10 掌握TCanvas方法950

29.11 BRUSHMAIN例程源码950

29.11.1 OnCreate事件957

29.11.2 FormShow方法958

29.11.3 设置Pen的模式(Mode)959

29.11.4 使用字型(Fonts)961

29.11.5 在Canvas上绘制图形962

29.11.6 使用CopyModes964

29.11.7 改变ClipRect964

29.12 使用其他形式的线形965

29.13 小结968

第30章 颜色、调色板和图像969

30.1 深入了解TColor969

30.1.1 颜色样本方案970

30.1.2 OnChange事件处理程序972

30.2 调色板974

30.3 再论Windows的图像文件格式978

30.3.1 使用位图和DIB978

30.3.2 使用图标978

30.3.3 使用元文件978

30.4 使用TImage和TPaintBox983

30.5 关于位图的补充说明984

30.5.1 旋转位图985

30.5.2 动态显示990

30.5.3 淡入淡出995

30.6 小结998

第31章 在C++ Builder中使用DirectDraw999

31.1 何谓DirectDraw999

31.2 设置DirectDraw1000

31.2.1 DirectDrawCreate1000

31.2.2 SetCooperativeLevel1001

31.2.3 SetDisplayMode1001

31.2.4 独占模式与Windowed模式1001

31.3 DirectDrawSurface接口1003

31.2.5 关于DirectDraw2的问题1003

31.3.1 Lock函数1004

31.3.2 IDirectDrawSurface2或IDirectDrawSurface3的问题1006

31.4 在DirectDraw中使用GDI1006

31.4.1 使用TBitmap1007

31.5 IDirectDrawPalette接口1008

31.5.1 创建一个自定义调色板1009

31.6 使用DirectDraw1010

31.6.1 动画制作1011

31.7 多表面和翻页技术1012

31.7.1 在背景上制作动画1013

31.9 小结1020

31.8 创建DirectDraw组件1020

第32章 在C++ Builder中使用Direct3D1021

32.1 什么是Direct3D1021

32.2初始化Direct3D应用程序1021

32.2.1 创建Direct3DRM对象1023

32.2.2 DirectDrawClipper1023

32.2.3 Direct3D着色选项1024

32.2.4 HandleActivate和HandlePaint1025

32.3 设置一个Direct3D场景1026

32.3.1 IDirect3DRMFrame1026

32.3.2 光源1027

32.4 用IMeshBuilder创建模型1028

32.3.3 摄影机1028

32.4.1 在磁盘上保存模型1029

32.4.2 复杂的网络1030

32.4.3 变换模型1031

32.4.4 从磁盘调入网格对象1033

32.5 纹理贴图1033

32.5.1 包装一个模型1034

32.6 一个三维模型和纹理浏览1036

32.7 小结1047

第8部分 高级话题1048

第33章 使用Delphi文件1048

33.1 如何使用Delphi代码1048

33.3 在C++Builder 3 中使用Delphi组件1049

33.2 在C++Builder中使用Delphi代码1049

33.4 关于Pascal编译器1050

33.4.1 什么时候可以使用is1051

33.4.2 Real数据类型1051

33.4.3 继承Pascal对象模型1051

33.4.4 空集1051

33.4.5 Pascal和C++类型1052

33.5 头文件生成1052

33.5.1 多重构造函数1052

33.5.2 数组属性1053

33.5.3 变体记录1054

33.6.2 Delphi中的句柄与C++Builder3中的句柄比较1055

33.6 链接错误1055

33.6.1 Pascal类中的方法1055

33.6.3 字节与字对齐问题1057

33.7 项目示例:Monster Hunt1057

33.7.1 创建主窗体1057

33.7.2 关于Monster Hunt1059

33.7.3 游戏1060

33.8 Delphi和C++Builder的结合1071

33.9 小结1073

第34章 OWL和Microsoft DLL的互用性1074

34.1 不能使用Microsoft Visual C++6的DLL情况1074

34.1.1 不要导出C++函数1074

34.1.2 不能导出类1076

34.1.3 不要发送脱离DLL的C++异常1078

34.1.4 不要在一端动态分配内存,而在另一端又将其释放掉1078

34.1.5 不要将RTL文件句柄传递给DLL1078

34.2 从Microsoft DLL中导入函数1078

34.2.1 为VC++的DLL创建一个工作文件.DEF1079

34.2.2 为VC++DLL创建一个实际的导入库1079

34.3 创建DLL的结束语1080

34.4 OWL支持1080

34.4.1 idetobpr:IDE转换成项目文件的工具1081

34.4.2 OWL动态设置1081

34.4.4 简单的Borland C++ 5的OWL应用程序转变成C++Builder3应用程序1082

34.4.3 OWL、ClassLib和OCF库1082

34.6 标准C++库1085

34.5 支持MFC1085

34.7 如何处置以前的C++Builder应用程序1086

34.8 混合使用OWL和VCL1086

34.8.1 OWL/VCL模板类1087

34.8.2 含有VCL窗体的OWL MDI应用程序1090

34.8.3 作为客户应用程序的OWL对话框1096

34.9 小结1098

第35章 动态/静态链接库和第三方问题1099

35.1 库链接和DLL加载概述1099

35.3 创建DLL库1100

35.2 理解DLL库1100

35.4 创建一个加载静态库的可执行程序1103

35.5 一个加载动态DLL的可执行演示程序1105

35.6 第三方DLL问题1107

35.7 名字分解1108

35.8 调用的约定1109

35.8.1 解决调用约定问题1110

35.9 使用别名1111

35.10 静态库1111

35.11 第三方静态库1115

35.12 小结1115

1999《Borland C++ Builder应用开发大全》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)(C.卡尔弗特)Charlie Calvert等著;徐 1999 北京:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

Borland C++3.1开发Windows应用程序(1993 PDF版)
Borland C++3.1开发Windows应用程序
1993 北京:清华大学出版社
C++Builder技术大全( PDF版)
C++Builder技术大全
BORLAND C++BUILDER编程( PDF版)
BORLAND C++BUILDER编程
borland c++ builder 3 应用程序开发学习教程 P374( PDF版)
borland c++ builder 3 应用程序开发学习教程 P374
Borland C++3.1开发Wind( PDF版)
Borland C++3.1开发Wind
Borland c++应用篇( PDF版)
Borland c++应用篇
Borland C++高级开发实践( PDF版)
Borland C++高级开发实践
北京:学苑出版社
Borland c++语言与开发应用( PDF版)
Borland c++语言与开发应用
TURBO C 及其应用开发( PDF版)
TURBO C 及其应用开发
Borland C++与Turbo C开发汉字应用软件技术(1992 PDF版)
Borland C++与Turbo C开发汉字应用软件技术
1992 陕西电子编辑部
Borland C++ Builder使用指南(1998 PDF版)
Borland C++ Builder使用指南
1998 西安:西安电子科技大学出版社
Borland C++3.1实用大全(1994 PDF版)
Borland C++3.1实用大全
1994 北京:北京航空航天大学出版社
Borland C++实用库函数大全(1992 PDF版)
Borland C++实用库函数大全
1992 南京:南京大学出版社
Borland C++ Builder 3应用程序开发学习教程(1999 PDF版)
Borland C++ Builder 3应用程序开发学习教程
1999 北京:北京大学出版社
Borland C++4开发指南(1996 PDF版)
Borland C++4开发指南
1996 北京:电子工业出版社