当前位置:首页 > 工业技术
C++ Builder 5程序设计大全
C++ Builder 5程序设计大全

C++ Builder 5程序设计大全PDF电子书下载

工业技术

  • 电子书积分:33 积分如何计算积分?
  • 作 者:(澳)Jarrod Hollingworth等著;康向东等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111093216
  • 页数:1393 页
图书介绍:本书全面介绍了C++Builder 5开发平台的各种技术,以及使用C++Builder来创建更为完整的应用程序的方法。主要内容包括:C++Builder 5基础,通信、数据库和Web编程,接口和分布式计算,高级技巧等。本书深入浅出,内容翔实,实例丰富,是C++Builder高级开发人员不可多得的一本好书。初级开发人员也可以参考书中所列的各种资源。对于C++Builder的研究人员来说,本书也是一个非常好的借鉴和参考。附带光盘包括C++Builder 5试用版、书中示例代码以及其他一些组件和工具。
《C++ Builder 5程序设计大全》目录

作者介绍 1

前言 1

第一部分 C++Builder5基础 1

第1章 C++Builder简介 1

1.1 C++Builder基础 1

译者序 1

1.1.1 Hello World!从基本开始 2

1.1.2 VCL、窗体和组件 3

1.1.3 组件面板 5

1.1.4 编写你最初的一个真正的程序 7

1.1.5 熟悉C++Builder 11

1.2 C++Builder5新增功能 12

1.2.1 Web应用程序开发 13

1.2.2 分布式应用程序 13

1.2.5 调试 14

1.2.6 数据库应用程序开发 14

1.2.3 小组开发 14

1.2.4 应用程序本地化 14

1.2.7 开发效率 15

1.2.8 随书工具光盘 15

1.3 升级与兼容性问题 15

1.3.1 升级早期版本的C++Builder 16

1.3.2 在C++Builder5中使用现存的工程 16

1.3.3 创建兼容以前版本C++Builder的工程 16

1.3.4 其他工程升级问题的解答 17

1.4 从Delphi的移植 17

1.4.1 注释 17

1.4.2 变量 18

1.4.3 常数 18

1.4.4 操作符 19

1.4.5 控制程序流程 21

1.4.6 函数和过程 23

1.4.7 类 24

1.4.8 预处理指令 25

1.4.9 文件的类型 26

1.5 C++Builder5优点和缺点 27

1.5.1 真正的可视化:真正的快速应用程序开发 27

1.5.2 跟上C++标准 28

1.5.3 选择正确的开发环境 29

1.5.4 C++Builder优点和缺点小结 29

1.6 为Kylix做一些准备 30

1.6.1 Kylix和C++Builder的相似之处 30

1.6.2 Kylix和C++Builder之间的差异 31

1.7 小结 32

1.6.4 何时发布 32

1.6.3 将C++Builder工程移植到Kylix 32

2.1.1 C++Builder工程中使用的文件 33

第2章 C++Builder工程及IDE详述 36

2.1 理解C++Builder的工程 36

2.1.2 工程管理器 36

2.2 使用对象库 36

2.2.1 增加项目到对象库中 37

2.2.2 使用对象库中的项目 40

2.2.3 在一个工程内共享项目 41

2.2.4 定制对象库 41

2.2.5 创建并增加一个向导到对象库中 41

2.3 理解和使用包 44

2.3.1 使用包的注意事项 46

2.3.2 C++Builder运行期包 47

2.3.3 使用tdurnp 50

2.4.1 对象观察器中的属性类别 51

2.4 C++Builder5的IDE新特征介绍 51

2.4.2 对象观察器下拉列表中的图像 52

2.4.3 XML工程文件格式 54

2.4.4 以文本格式存储窗体 56

2.4.5 Node-Leve选项 58

2.4.6 新的To-Do列表 60

2.4.7 Console Wizard 62

2.5 小结 64

第3章 C++Builder编程 65

3.1 改善可读性的编程风格 65

3.1.1 使用简短的代码 65

3.1.2 代码布局的使用 67

3.1.3 使用合理的命名方法 72

3.1.5 使用注释 77

3.1.4 代码结构的使用 77

3.1.6 改善代码可读性的最后一个问题 81

3.2 在C++Builder中更好地编程 81

3.2.1 使用String类代替Char 81

3.2.2 理解引用并适当地使用它们 82

3.2.3 避免使用全局变量 85

3.2.4 理解并在代码中使用const 89

3.2.5 熟悉异常的原理 92

3.2.6 使用new和delete管理内存 95

3.2.7 理解和使用C++风张的类型转换 99

3.2.8 了解何时使用预处理器 100

3.2.9 了解和使用C++标准库 102

3.3 参考文献 103

3.4 小结 104

4.1.1 理解C++模板 105

第4章 C++Buiader高级编程 105

4.1 标准C++模板 105

4.1.2 探讨标准C++库功能 108

4.1.3 掌握包容器和迭代器 109

4.1.4 使用标准算法 115

4.1.5 走近SCL 116

4.2 使用智能指针和强大的包容器 116

4.2.1 堆与栈 116

4.2.2 指针 116

4.2.3 强包容器 120

4.2.4 缺陷 121

4.2.5 智能指针和强大的包容器小结 121

4.3 实现高级异常处理器 122

4.3.1 检查策略 122

4.3.3 替换编译器的缺省异常处理器 123

4.3.2 检查优点 123

4.3.4 加入特定工程信息到类 124

4.3.5 异常处理器的源代码 124

4.3.6 高级异常处理器小结 141

4.4 创建多线程应用程序 141

4.4.1 理解多任务 142

4.4.2 理解多线程 142

4.4.3 使用API调用创建一个线程 142

4.4.4 理解TThread对象 145

4.4.5 理解主VCL线程 150

4.4.6 建立优先级 152

4.4.7 计时线程 154

4.4.8 同步线程 155

4.5.2 软件设计中的可再用模式 159

4.5.1 理解模式的可再用的本性 159

4.5 设计模式介绍 159

4.5.3 作为词汇表的设计模式 160

4.5.4 设计模式格式 160

4.5.5 设计模式分类 161

4.5.6 有关设计模式的部分想法 162

4.6 小结 162

第5章 用户界面原则和技巧 164

5.1 用户界面原则 164

5.2 本章使用的工程实例 166

5.3 通过给用户提供反馈改善可用性 168

5.3.1 使用TProgressBar和TCGauge 168

5.3.2 使用Cursor 169

5.3.3 使用TStatrsBar 170

5.3.4 使用Hints 177

5.4.1 响应输入 193

5.4 通过输入焦点的控制改痒可用性 193

5.4.2 移动输入焦点 198

5.5 通过外观改善可用性 199

5.5.1 在按钮上只使用符号 201

5.5.2 使用符号作为文本的附加 202

5.5.3 使用颜色以提供可视化线索 206

5.5.4 使用形状控件 206

5.6 通过允许定制改善用户界面的可用性 208

5.6.1 停放 209

5.6.2 重定尺寸 212

第6章 编译和优化你的应用程序 215

5.6.3 使用TControlBar 221

5.6.4 控制可见性 232

5.6.5 定制MDI父窗体的客户区 235

5.7 通过记住用户的优选改善可用性 236

5.8.1 处理不同屏幕分辨率 244

5.8 处理不同的屏幕条件 244

5.8.2 处理不同字体尺寸 245

5.8.3 处理不同颜色深度 245

5.9 处理用户界面实现时的复杂性 245

5.9.1 使用Action列表 246

5.10 小结 249

6.1 理解编译器如何工作 251

6.2 加快编译速度 252

6.2.1 预编译头文件 253

6.2.2 加快编译速度的其他技术 254

6.3 C++Builder5编译器和连接器的改进 255

6.3.2 混合编译器的改进 256

6.3.1 后台编译 256

6.3.3 连接器的新改进 257

6.4 优化:介绍 257

6.5 招待速度的优化 259

6.5.1 Crozzle Solver应用程序示例 260

6.5.2 指数时间 261

6.5.3 有关执行速度的工程选项 263

6.5.4 检测瓶颈 264

6.5.5 优化设计和算法 268

5.9.2 共享事件处理器 274

6.5.6 讨论使代码合理化的技术 274

6.5.7 使数据合理化的技术 286

6.5.8 手工调整汇编代码 288

6.5.10 执行速度优化小结 291

6.6.1 优化程序规模 291

6.5.9 使用外部优化 291

6.6 优化应用程序的其他方面 292

6.6.2 最后的优化方面 292

6.7 小结 292

第7章 调试应用程序 293

7.1 调试概述 293

7.1.1 工程指导原则 294

7.1.2 编程指导原则 295

7.1.3 调试的任务 296

7.2 基本调试技术 296

7.2.1 输出调试信息 297

7.2.2 使用断言 302

7.2.3 实现全局异常处理器 303

7.3 使用C++Brilder交互式调试器 304

7.2.4 基本调试的其他问题 304

7.3.1 高级断点 305

7.3.2 C++Builder5中新的断点特征 308

7.3.3 C++Builder中的调试视图 308

7.3.4 监视、计算和修改 313

7.3.5 Debug Inspector 313

7.4 CodeGuard 314

7.4.1 启用和配置CodeGuard 315

7.4.2 使用CodeGuard 316

7.4.3 检查CodeGuard中的错误及其起因 317

7.5 高级调试 321

7.5.1 查找非法访问的根源 322

7.5.2 连接到运行中的进程 323

7.5.3 使用刚好及时调试 323

7.5.4 远程调试 324

7.5.6 其他调试工具 325

7.5.5 调试DLL 325

7.6 测试 327

7.6.1 测试的阶段和技术 327

7.6.2 测试的提示 328

7.7 小结 329

第8章 使用VCL组件 330

8.1 VCL概述 330

8.1.1 从TObject开始 331

8.1.2 建立在已有的对象的基础之上 332

8.1.3 使用VCL 333

8.1.4 C++扩展 335

8.2 流机制 341

8.2.1 高级流需求 342

8.2.2 非发布属性的流 342

8.3.1 通用控件动态链接库 346

8.3 通用控件更新 346

8.3.2 C++Builder通用控件更新 348

8.4 多种VCL的强化 351

8.4.1 新的Help Hint和Menu特点 351

8.4.2 访问注册表 351

8.4.3 VCL文件增强 351

8.4.4 新的TapplicationEvents组件 352

8.4.5 TIcon增强 352

8.4.6 其他的各种VCL强化 352

8.5.1 将TStringLIst作为容器使用 353

8.5.2 存储非VCL对象 353

8.5.3 将字符串连接到相同类型的对象 354

8.5.4 创建一个事件链 363

8.5.5 列表排序 364

8.5.6 一些改进 365

8.6.3 TToolBar组件 366

8.6.2 TListVIew组件 366

8.6.1 TTreeView组件 366

8.6 高级定制绘制事件 366

8.6.4 高级定制绘制事件范例 367

8.7 ControlPanelApplet向导组件 367

8.8 使用第三方组件 374

8.8.1 第三方组件的优点的缺点 375

8.8.2 到何处查找更多的C++Builder资源 375

8.9 小结 375

9.1 为什么要创建定制组长件 377

第9章 创建定制组件 377

9.2 理解组件的编写 378

9.2.1 为什么以现有的组件为基础 380

9.2.2 设计定制组件 380

9.2.3 使用VCL图表 380

9.3 编写非可视化的组件 380

9.3.1 属性 380

9.3.2 事件 388

9.3.3 方法 390

9.3.4 创建组件的异常 392

9.3.5 命名空间 394

9.3.6 响应消息 395

9.3.7 设计期和运行期 396

9.3.8 连接组件 398

9.3.9 在组件之间连接事件 400

9.4 编写可视组件 402

9.4.1 从何开始 402

9.4.2 TCanvas 403

9.4.3 在组件中使用图形 404

9.4.4 响应鼠标消息 407

9.4.5 组合所有技术 408

9.4.6 修改窗口组件 415

9.5 创建定制的数据感知组件 427

9.5.1 使控件只读 427

9.5.2 建立连接 428

9.5.3 使用OnDataChange事件 430

9.5.4 变成数据编辑控件 432

9.5.5 数据集更新 433

9.5.6 最后增加一个消息 435

9.6 注册组件 436

13.5.3 TDataSetTaqbleProducer 438

9.7 小结 438

第10章 创建属性和组件编辑器 439

10.1 创建定制的属性编辑器 441

10.3.2 通过手工创建获得一个非VCL类型的TTyPeInfo*(PTypeInfo) 446

10.1.1 GetAtributes()方法 449

10.1.2 GetValue()方法 449

10.1.3 SetValue()方法 450

10.1.4 Edit()方法 451

10.1.5 GetValues()方法 455

10.1.6 使用TPropertyEditor属性 455

10.1.7 选择适当的属性编辑器需要考虑的问题 456

10.2 属性和异常 457

10.3 注册定制属性编辑器 458

10.3.1 从一个现有的非VCL类型的类和属性中获取一个TTyPeInfo*(PTypeInfo) 459

10.3.3 如何获取非VCL类型和TTypeInfo* 468

10.3.4 重载属性编辑器的规则 468

13.8 Web安全性 468

10.4 在属性编辑器中使用图像 469

10.4.1 ListMeasureWidth()方法 473

10.4.2 ListMeasureHeight()方法 473

10.4.3 ListDrawValue()方法 474

10.4.4 PropDrawValue()方法 479

10.4.5 PropDrawName()方法 480

10.5 安装编辑器包 482

10.6 在属性编辑器中使用连接的图像列表 483

10.6.1 GetAttributes()方法 488

10.6.3 GetValues()方法 489

10.6.2 GetComponentImgeList()方法 489

10.6.4 ListMeasureWidth()和ListMeasureHeight()方法* 490

10.6.5 ListDrawValue()方法 491

10.6.6 PropDrawValue()方法 493

10.6.7 绘制图像时需要考虑的其他问题 495

10.6.8 连接到父类的TCustomImageList 495

10.6.9 ImageIndex属性的通用解决方案 499

10.7 创建定制组件编辑器 504

10.7.1 Edit()方法 508

10.7.2 EditProperty()方法 512

10.7.3 GetVerbCount()方法 513

10.7.4 GetVerb()方法 513

10.7.5 PrepareItem()方法 514

10.7.6 ExecuteVerb()方法 519

10.7.7 COpy()方法 520

10.9 在定制组件编辑器和属性编辑器中使用预定义图像 522

10.8 注册组件编辑器 522

10.9.1 将资源增加到包中 523

10.9.2 在属性和组件编辑器中使用资源 524

10.10 在定制组件中注册属性类别 528

10.10.1 理解类别和类别的创建 528

10.10.2 在类别中注册属性 530

10.11 小结 536

11.1.1 在对象观察器中显示类属性的发布属性 538

第11章 定制组件的更多技巧 538

11.1 定制组件的各种问题 538

11.1.2 在事件参数列表中使用名字空间 539

11.1.3 确定事件参数列表需注意的问题 540

11.1.4 重载DYNAMIC函数 544

11.1.5 在定制组件中处理消息 545

11.1.6 在组件中使用Windows的回调函数 558

11.1.7 选择基本的属性类型时的考虑 566

11.1.8 允许在设计期和运行期使用用组件 570

11.2 框架 571

11.2.2 TCustomFramer类 572

11.2.1 框架到底是什么 572

11.2.3 在设计期使用框架 573

11.2.4 在运行期使用框架 574

11.2.5 创建TFrame的派生类 574

11.2.6 由TFrame派生类继承 577

11.2.7 重用框架 578

11.3 组件发布和相关问题 579

11.2.8 框架的小结 579

11.3.1 将组件打包 580

11.3.2 发布文件应该放在何处 584

11.3.3 命名包和包的单元 584

11.3.4 命名组件 586

11.3.5 只发布设计期包 586

11.3.6 为不同版本的C++Builder发布组件 588

11.3.7 创建组件面板位图 591

11.3.8 设计组个把时的有关发布的指导原则 591

11.3.9 其他有关发布的问题 592

11.4 小结 592

12.1 串口通信 593

第二部分 通信、数据库和Web编程 593

第12章 通信编程 593

12.1.1 协议 594

12.1.2 状态机 596

12.1.3 结构 597

12.1.4 线程同步技术 597

12.1.5 缓冲 598

12.1.6 在串口通信中注释 598

12.2 互联网协议--SMTP、FTP、HTTP、POP3 599

12.2.1 遍历组件标签页 599

12.2.2 一个聊天服务器例子 600

12.2.3 一个聊天客户端例子 604

12.2.4 一个Email应用程序例子 607

12.2.5 一个HTTP服务器例子 614

12.2.6 一个FTP客户端软件例子 617

12.3 小结 622

13.1 Web模块 623

第13章 Web编程 623

13.2.1 CGI 624

13.2.2 WinCGI 624

13.2.3 ISAPI/NSAPI 624

13.2 Web服务器应用程序向导 624

13.2.4 CGI或者ISAPI 625

13.3 Web有Broker支持组件 625

13.3.1 TWebDispatcher 626

13.3.2 TWebModule 626

13.3.3 TWebResponse 628

13.3.4 TWebRequest 628

13.4 Web服务器 629

13.5 WebBroker生成组件 632

13.5.1 TPageProducer 632

13.5.2 TDataSetPageProducer 635

13.5.4 TQueryTableProducer 640

13.6 Web应用程序向导 644

13.7 保持状态 644

13.7.1 胖URL 645

13.7.2 Cookies 645

13.7.3 隐藏字段 646

13.8.1 安全Socket层 649

13.8.2 授权 649

13.8.3 加密Web应用程序 651

13.9 HTML和XML 655

13.10 InternetExpress 656

13.10.1 消费者订单 656

13.10.2 TMidasPageProducer 656

13.10.3 Web页编辑器 657

13.10.4 分发 658

13.10.5 最后的主/明细表 659

13.10.6 Web页设计问题 661

13.11 小结 662

第14章 数据库编程 663

14.1 数据库应用程序的结构模型 663

14.1.1 Borland数据库引擎 663

14.1.2 BDE原有(单层) 664

14.1.3 BDE/SQL链接(客户/服务器) 664

14.1.4 分布式(多层) 665

14.1.5 数据访问方法 666

14.1.6 原有组件 666

14.1.7 使用BDE的ODBC 666

14.1.8 使用原有组件的ODBC 667

14.1.9 ADO(ActiveX) 668

14.1.10 嵌入的SQL 668

14.1.11 原有API 669

14.1.12 数据库结构结论 669

14.1.13 有关数据库结构更多信息的来源 670

14.2 结构化查询语言 670

14.2.1 表和索引 670

14.2.2 参数 671

14.2.3 insert、update、delete和select 672

14.2.4 合计函数 673

14.2.5 有关SQL的更多信息 673

14.3 C++Builder的ADO特殊组件 674

14.3.1 ADO与BDE比较 674

14.3.2 组件一览 675

14.3.3 数据库连接 676

14.3.4 可访问的数据集 677

14.3.5 用TADLTable访问数据集 677

14.3.6 使用TADOConnand以访问数据集 680

14.3.7 可管理的事务 680

14.3.8 使用组件事件 681

14.3.9 创建基本的数据库应用程序 682

14.3.10 性能优化 682

14.3.11 错误处理问题 684

14.3.12 多层应用程序和ADO 684

14.3.13 ADO特殊组件结论 684

14.4 数据获取结构 684

14.4.1 基本选择 685

14.4.2 从多个源中提取数据 686

14.5.1 什么是数据模块 687

14.5 数据模块设计器 687

14.5.2 为什么要用数据模块 688

14.5.3 如何在应用程序、DLL和分布式对象中使用数据模块 689

14.5.4 数据模块中有什么 690

14.5.5 如何在我的数据柜里块中加入属性 690

14.5.6 如何使用数据模块设计器 691

14.5.7 高级内容 693

14.5.8 用数据模块继承的窗体 693

14.5.9 处理不规则的用数据模块继承的窗体 694

14.5.10 如何在特殊的用户界面中避免依赖性 695

14.5.11 如何在数据模块中共同使用特定应用程序和框架组件 695

14.5.12 包中的数据模块 697

14.5.13 数据模块设计器--结论 697

14.6 InterBase Express 698

14.6.1 Bug追踪者数据库计划 698

14.6.3 发生器、触发器和存储过程 700

14.6.2 数据库规则 700

14.6.4 Bug追踪者实现程序 702

14.6.5 Bug追踪器回顾 709

14.7 小结 709

第三部分 接口和分布式计算 711

第15章 DLL和插件 711

15.1 使用DLL向导 711

15.2 编写和使用DLL 712

15.2.1 静态连接DLL 713

15.2.2 从动态连接的DLL中导入函数 715

15.2.3 输出类 719

15.3 使用包与DLL的比较 721

15.4 在DLL中使用SDI窗体 723

15.5 在DLL和包中使用MDI子窗体 724

15.5.1 在DLL中使用MDI子窗体 724

15.5.2 在包中使用MDI子窗体 728

15.6 在C++Builder中使用微软VisualC++DLL 731

15.7 在微软的Visual C++中使用C++Builder DLL 731

15.8 编写插件 732

15.8.1 解剖插件 733

15.8.2 TIBCB5PlugInBase类 737

15.8.3 TBCB5Pluginmanager 740

15.8.4 插件回顾 741

15.9 小结 741

第16章 COM编程 743

16.1 理解COM服务器和客户端 743

16.2 再论输出接口和事件接收器 744

16.3 编写COM服务器 745

16.3.1 选择服务器类型 745

16.3.3 创建服务器 746

16.3.2 选择线程模式 746

16.3.4 加入COM对象 747

16.3.5 剖析生成的代码 750

16.3.6 编写方法体 754

16.3.7 加入更好的错误支持 755

16.3.8 实现触发事件的方法 758

16.3.9 实现一个定制接口 758

16.3.10 触发定制的事件 762

16.4 编写Proxy/Stub DLL 766

16.5 编写客户端COM 772

16.5.1 导入类型库 772

16.5.2 查看生成的C++结构 773

16.5.3 创建和使用COM服务器对象 776

16.5.4 获得基于Dispinterface的事件 777

16.5.5 查询定制的接口 779

16.5.6 编写定制的基于接口的事件接收器 780

16.6 推荐阅读 784

16.7 小结 785

第17章 走向分布式:DCOM 786

17.1 DCOM是什么 786

17.2 DCOMCnfg实用工具 787

17.2.1 全局安全性设置 787

17.2.2 每一服务器安全性设置 789

17.3 现场测试DCOM 791

17.3.1 创建服务应用程序 791

17.3.2 创建客户端应用程序 793

17.3.3 配置Launch和Access Permissions 794

17.4 安全性编程 796

17.4.1 CoInitializeSecurity函数参数 796

17.3.4 配置Identity 796

17.3.5 运行例子 796

17.4.2 使用CoInitializeSecurity 798

17.4.3 理解DLL客户端和安全性 799

17.4.4 实现程序化访问控制 799

17.4.5 实现接口范围的安全性 801

17.4.6 使用Balnket 802

17.5 小结 809

18.1.1 COM+应用程序 811

第18章 深入探讨:COM+ 811

18.1 COM+介绍 811

18.1.2 COM+目录 812

18.2 使用COM+服务 812

18.2.1 松散耦合事件 813

18.2.2 事务 814

18.2.6 负载平衡性 816

18.2.5 队列组件 816

18.2.4 安全性 816

18.2.3 同步性 816

18.3 开发和使用COM+事件 817

18.3.1 创建COM+事件对象 817

18.3.2 在COM+应用程序中安装事件 819

18.3.3 创建发布者 822

18.3.4 创建订户 823

18.3.5 配置订户 826

18.3.6 创建一个永久署名 827

18.3.7 创建一个临时署名 828

18.4 开发和使用COM+事务对象 837

18.4.1 为Business层创建事务对象 838

18.4.2 开发补偿资源管理器 846

18.4.3 创建客户端 857

18.5 小结 857

19.1 MIDAS介绍 859

第19章 使用MIDAS3的多层分布式应用程序 859

19.2 MIDAS客户端和服务器 861

19.2.1 创建一个简单的MIDAS服务器 861

19.2.2 检查MIDAS服务器注册 864

19.2.3 创建一个MIDAS客户端 865

19.2.4 使用Briefcase模式 868

19.2.5 使用ApplyUpdates 871

19.2.6 执行错误处理 871

19.2.7 说明Reconcile错误 874

19.2.8 远程访问服务器 875

19.2.9 创建一个MIDAS主-明细服务器 875

19.2.10 输出主-明细数据集 878

19.2.11 创建一个MIDAS主-明细客户端 878

19.2.12 使用嵌套表 879

19.2.13 理解MIDAS带宽瓶颈 881

19.3 MIDAS3增强 883

19.3.1 TDataSetProvider 883

19.3.2 TProvider与TAppServer 884

19.3.3 无状态数据处理 884

19.3.4 IntemetExpress应用程序 889

19.3.5 WebConnection组件 890

19.3.6 对象池 891

19.3.7 Socket服务器 892

19.3.8 对象代理 895

19.3.9 分发 895

19.4 小结 896

第20章 使用CORBA的分布式应用程序 897

20.1 CORBA介绍 897

20.2.2 Always或On-demand 898

20.2.1 静态和动态 898

20.2 CORBA是如何工作的 898

20.2.3 平面或分层 899

20.2.4 谁是服务器,谁是客户端 899

20.2.5 对象请求代理 899

20.2.6 基本对象适配器 899

20.2.7 便携对象适配器 899

20.2.8 CORBA与COM 899

20.3 Visibroker组件 900

20.3.1 智能代理 900

20.3.2 对象激活精灵 900

20.3.3 控制台 901

20.4 接口定义语言 901

20.4.1 interface关键字 901

20.4.5 异常 902

20.4.4 类定义 902

20.4.2 attribute关键字 902

20.4.3 方法 902

20.4.6 层次 903

20.4.7 模块 903

20.5 C++Builder5的新特点 904

20.6 C++Builder新的考验CORBA 905

20.6.1 Environment Options 905

20.6.2 Debugger OPtions 905

20.6.3 Project Options 906

20.6.4 CORBA Server Wizard 906

20.6.5 CORBA Client WIzard 907

20.6.6 CORBA IDL File WIzard 907

20.6.7 CORBA Object Implementation Wizard 907

20.6.9 Use CORBA Object Wizard 908

20.6.8 Project Updates对话框 908

20.6.10 C++Builder和C++Builder5之间的不同 909

20.7 实现程序模式 910

20.7.1 层次 911

20.7.2 虚拟实现程序层次 911

20.7.3 授权模型 911

20.8 穷人的CORBA 912

20.9 小结 912

第21章 集成微软Office 913

21.1 集成微软Office概况 913

21.2 如何集成 914

21.2.1 使用TOleContainer 916

21.2.2 使用Automation 916

21.2.3 使用Vartant和Automation对象 917

21.3.1 集合 919

21.3 集成Word 919

21.2.4 防范使用Autmation时的宏病毒 919

21.2.5 使用Word Basic 919

21.3.2 应用程序对象 920

21.3.3 使用文档 921

21.3.4 从Word中得到文本 923

21.3.5 在Word中文档中放入对象 926

21.4 集成Excel 929

21.4.1 获得应用程序对象 929

21.4.2 使用工作簿 929

21.4.3 将单元格放到Execl工作簿中 932

21.4.4 从Execl得到单元格 933

21.5 使用C++Builder5的Server组件 934

21.5.1 WordApplication和WordDocument组件 935

21.5.2 再次讨论词汇表 935

21.6.1 Word 939

21.5.3 有关ATL和OleServers的最后想法 939

21.6 更深入探讨 939

21.6.2 Excel 940

21.6.3 其他Office应用程序 940

21.7 小结 942

第22章 使用ActiveX技术 943

22.1 理解活动服务器对象 943

22.1.1 一个入门的例子:通过Active Server Object Wizard创建Response和Request对象 944

22.1.2 ASP Session、Server和Application对象 950

22.1.3 ASP对象和WebBroker支持 951

22.1.4 再次分发活动服务器对象 952

22.1.5 调试活动服务器对象 953

22.2 ActiveForm介绍 953

22.3 创建一个ActiveForm 953

22.4.1 为ActiveForm设置选项 955

22.4 在IE中分发一个要使用的ActiveForm 955

22.4.2 连结到一个ActiveForm 957

22.5 创建一个数据感知ActiveForm 959

22.5.1 使用CAB文件和包 961

22.5.2 ActiveForm更新 961

22.5.3 OCCACHE和Downloaded Program Files 962

22.6 创建ActiveForm作为MIDAS客户端 963

22.7 在Delphi中使用ActiveForm 964

22.8 使用ActiveForm创建组件模板 965

22.9 Shell编程 966

22.9.2 取出一个文件夹的内容 969

22.9.3 传送Shell对象 971

22.10 小结 975

23.1 报告中的数据表示 977

23.1.1 理解报告的价值 977

第23章 C++Builder的数据表示 977

第四部分 高级主题 977

23.1.2 用QuickReport产生报告 978

23.1.3 理解自定义浏览器的体系 978

23.1.4 QuickReport自定义浏览器小结 987

23.2 打印文本和图像 987

23.2.1 打印文本 987

23.2.2 打印图形 996

23.3 使用高级打印技术 1000

23.3.1 确定打印机分辨率 1000

23.3.2 确定可打印纸张区域大小 1001

23.3.3 确定物理尺寸 1001

23.3.4 确定打印机绘图能力 1001

23.3.5 怎样打印旋转字体 1002

23.3.6 访问打印机配置信息 1003

23.3.7 怎样得到缺省打印机名 1004

23.3.8 怎样设置缺省打印机 1005

23.3.9 重新设置TPuinter 1008

23.3.10 用TPuinter访问DEVMODE的常用信息 1009

23.3.11 使用PRINTER_INFO_2 1010

23.3.12 其他与纸张有关的函数 1015

23.3.13 处理作业 1022

23.3.14 怎样捕获PrintScreen键 1024

23.3.15 打印窗体 1025

23.3.16 创建打印预览 1026

23.3.17 使用与打印机有关的变换例程 1026

23.3.18 其他与打印机有关的信息 1028

23.4 用TChart组件建立图表 1029

23.4.1 开始学习TeeChart 1029

23.4.2 在运行时改变图表的外观 1030

23.4.3 与图表交互 1031

23.4.4 动态建立图表 1032

23.4.5 打印图表 1033

23.4.6 升级到TeeChart Pro 1034

23.5 小结 1034

第24章 使用Win32 API 1036

24.1 Win32 API与Win32中间件 1036

24.2 Windows和API的历史概述 1037

24.3 Win32 API功能范围 1039

24.3.1 窗口管理 1041

24.3.2 系统服务 1042

24.3.3 图形设备接口 1043

24.3.4 多媒体服务 1043

24.3.5 通用控件和对话框 1044

24.3.6 外壳特性 1045

24.3.7 国际特性 1046

24.3.8 网络服务 1047

24.4 Windows程序的构造和操作 1048

24.4.1 WinMain() 1048

24.4.2 窗口句柄 1049

24.4.3 Windows消息 1050

24.5 使用API的实例 1052

24.5.1 在程序中启动其他应用程序 1052

24.5.2 基本的文件I/O 1056

24.5.3 使用外壳的魔力 1064

24.5.4 实现多媒体服务 1073

24.5.5 使用全局惟一标识符 1077

24.5.6 确定系统信息 1078

24.5.7 闪现通知 1087

24.5.8 添加系统支持 1091

24.5.9 动画效果 1092

24.5.10 美化应用程序 1094

24.5.11 编写控制面板applet 1102

24.6 小结 1102

第25章 多媒体技术 1113

25.1 图形设备接口 1113

25.1.1 Windows API和设备描述表 1114

25.1.2 理解TCanvas:C++Builaer接口 1114

25.1.3 自定义绘制 1116

25.1.4 模拟钟表例子 1118

25.2 图像支持 1118

25.2.1 Windows位图对象 1118

25.2.2 TBitmap类 1119

25.2.3 JPEG图像 1119

25.2.4 GIF图像 1120

25.2.5 PNG图像 1121

25.3 图像处理 1123

25.3.1 显示和获取图像信息 1124

25.3.2 使用TCanvas-〉Pixels读取单个像素值 1125

25.3.3 图像生成 1126

25.3.4 使用ScanLine快速读取像素值 1127

25.3.5 点操作:门限操作和彩色/灰度转换 1128

25.3.6 全局操作:柱状图均衡 1130

25.3.7 几何转换:缩放 1132

25.3.8 空间操作:平滑和边缘检测 1134

25.4 音频文件、视频文件和CD音乐 1136

25.4.1 媒体控制接口 1136

25.4.2 波形音频接口 1141

25.4.3 波形音频接口小结 1147

25.5 小结 1147

26.1 OpenGL介绍 1149

第26章 DirectX和OpenGL视级图形技术 1149

26.1.1 OpenGL和Direct3D 1150

26.1.2 OpenGL命令结构 1150

26.1.3 在C++Builder中使用OnIdle()循环绘制 1150

26.2 使用OpenGL 1150

26.2.1 步骤1:OpenGL初始化 1151

26.2.2 步骤2:用灯光和阴影设置绘制环境 1155

26.2.3 步骤3:三维变换 1157

26.2.4 步骤4:绘制图元 1158

26.2.5 步骤5:置换表面 1166

26.2.6 OpenGL例子程序 1166

26.2.7 OpenGL小结 1167

26.2.8 OpenGL参考 1167

26.3 DirectX简介 1167

26.4.1 初始化DirectDraw 1168

26.4 使用DirectDraw 1168

26.3.1 DirectX API的COM基础 1168

26.3.2 非对象DirectX函数 1168

26.4.2 为DirectDraw调整显示设置 1170

26.4.3 绘制表面 1171

26.4.4 在DirectDraw表面上使用GDI 1173

26.4.5 把位图装载到表面 1175

26.4.6 DirectDraw例子程序 1179

26.4.7 DirectDraw小结 1179

26.5 使用DirectSound 1179

26.5.1 初始化DirectSound对象 1180

26.5.2 创建从缓冲 1181

26.5.3 DirectSound例子程序--多种声音播放器 1187

26.6 深入DirectX 1187

26.8 小结 1188

26.7 DirectX参考 1188

第五部分 C++Builder应用程序部署 1189

第27章 创建帮助文件和文档 1189

27.1 技术文档编写101--快速编写的10个步骤 1190

27.2 文档类型 1190

27.3 在线文档的策略 1191

27.4 帮助格式 1194

27.5 WinHelp格式帮助文件:Windows标准 1194

27.5.1 帮助制作工具 1195

27.5.2 上下文帮助 1196

27.5.3 MS Help Workshop 1197

27.5.4 What’s This?具有重要作用珈入到C++Builder 1201

27.5.5 使用高级特性扩展帮助工程 1202

27.6 Microsoft HTML帮助文件 1202

27.7.2 帮助方法 1204

27.7.1 Help属性 1204

27.7 VCL中帮助属性和方法 1204

27.7.3 事件 1206

27.8 帮助制作工具资源 1206

27.8.1 书籍 1206

27.8.2 Internet上可以得到的帮助制作工具 1206

27.9 小结 1210

第28章 软件发布 1211

28.1 语言的国际化和本地化 1211

28.1.1 语言国际化综述 1211

28.1.2 Localize应用程序 1212

28.1.3 要记住的事情 1217

28.2 Resource DLL Wizard 1217

28.2.1 安如何工作 1217

28.2.2 如何创建资源DLL 1218

28.2.3 如何测试 1219

28.3 要安装的其他文件和程序 1220

28.3.1 应用程序文件 1220

28.3.2 发布的步骤 1222

28.4 版权和软件许可 1223

28.4.1 版权 1223

28.4.2 软件许可 1224

28.5 软件保护 1224

28.5.1 保护应用程序 1224

28.5.2 使用第三方组件保护应用程序经 1225

28.5.3 使用其他类型的组件保护应用程序 1226

28.5.4 关于软件保护的一些考虑 1227

28.6 共享件 1227

28.6.1 共享件以及如何保护 1227

28.7.2 客户支持 1229

28.7.1 Web站点 1229

28.7.3 广告 1229

28.6.2 实现软件保护方法 1229

28.6.3 共享件方法概括 1229

28.7 通过Internet发布和销售 1229

28.7.4 免费标语广告 1230

28.7.5 接受信用卡和提供解锁代码 1231

28.8 小结 1232

30.11.3 使用轮廓 1232

28.7.6 Internet销售提示 1232

29.1.1 安装程序制作工具 1233

第29章 软件安装与升级 1233

29.1 安装和卸载 1233

29.1.2 Install Maker 1234

29.1.3 卸载 1236

29.2 CAB和INF文件 1237

29.2.2 INF文件 1239

29.2.3 Internet上的文件包 1242

29.3 版本、升级和补丁 1245

29.3.1 版本 1245

29.3.2 应用程序的升级 1246

29.3.3 补丁 1247

29.3.4 Patch Maker 1247

29.4 版本控制和TeamSource 1249

29.3.5 有关升级和补丁的一些注意事项 1249

29.4.1 谁应该使用TeamSource 1250

29.4.2 为什么要用TeamSource 1250

29.4.3 什么时候应该用TeamSource 1250

29.4.4 在哪里可以使用TeamSource 1250

29.4.5 如何使用TeamSource 1251

29.4.6 TeamSource窗口 1255

29.4.7 版本控制工具 1257

29.4.9 锁 1258

29.4.8 书签 1258

29.5 使用InstallShield Express 1259

29.5.2 开始使用InstallShield 1259

29.5.1 安装InstallShield 1259

29.6 小结 1265

29.5.3 测试 1265

第六部分 编程技巧 1267

30.1 用Enter键模拟Tab键 1268

30.1.1 解决方案 1268

30.1.2 代码说明 1268

30.2.1 解决方案 1268

30.2.2 代码 1270

30.1.3 缺陷 1270

30.2.3 确定OS版本小结 1271

30.2 确定OS的版本 1271

30.1.4 Tab键模拟小结 1271

30.3.1 背景 1273

30.3 使用浮点数编程 1273

30.3.2 使用浮点数 1274

30.3.3 加法和减法 1275

30.3.4 执行算法的公式组合 1278

30.3.5 比较数据 1278

30.3.6 浮点数小结 1278

30.4 实现splash界面 1279

30.4.1 WinMain()函数 1279

30.4.2 创建Spalsh界面 1280

30.5 防止多个实例运行 1281

30.5.1 解决方案 1282

30.5.2 代码 1282

30.5.3 多个实例运行小结 1286

30.6 使用拖放操作 1286

30.6.1 解决方案 1287

30.6.2 代码 1287

30.6.3 程序是如何工作的 1289

30.6.4 拖放小结 1290

30.7 捕获屏幕 1290

30.7.1 Windows如何处理窗口 1290

30.7.2 解决方案 1291

30.7.3 捕获屏幕小结 1295

30.8 实现TJoyStick组件 1295

30.9 创建类Windows系统监视器的应用程序 1305

20.9.1 Windows系统资源 1305

30.9.2 解决方案 1307

30.10 检验探测程序 1313

30.9.3 系统监视器小结 1313

30.11 使用树形视组件 1320

30.11.1 树形视的基础 1320

30.11.2 增加节点 1321

30.11.4 导航树形视 1324

30.11.5 访问节点 1325

30.11.6 查找节点 1326

30.11.7 显示节点数目 1327

30.11.8 上移和下移节点 1328

30.11.9 实现拖放 1329

30.11.10 修改节点 1331

30.11.11 删除节点 1333

30.11.12 支持Undo和Redo删除 1334

30.12 实现图标抽取应用 1336

30.11.14 TTree小结 1336

30.11.13 保存树 1336

30.13 创建类Windows浏览器的应用程序 1342

30.13.1 Windows外壳函数和接口 1343

30.13.2 解决方案 1343

30.13.3 Windows Explorer小结 1348

30.14 使用NT服务 1349

30.14.1 SendMsg程序 1349

30.14.2 Stickums服务 1351

30.14.3 Stickem客户程序 1354

30.14.4 Windows服务小结 1355

30.15 使用加密技术 1355

30.15.1 解决方案 1355

30.15.2 文件编码 1358

30.15.3 文件解密 1363

30.16 创建世界昼夜时钟 1365

30.17 小结 1371

第31章 一个现实的例子 1372

31.1 检验World Wave Statistics程序 1372

31.2 检验源代码 1373

31.2.1 头文件math.h 1373

31.2.2 头文件mapunit.h 1374

31.2.3 头文件wavedata.h 1374

31.2.4 源代码文件about.cpp 1375

31.3 检验TMainUnit的代码 1375

31.4 进行某些改进 1379

31.5 小结 1381

第七部分 附录 1383

附录A 信息源 1383

相关图书
作者其它书籍
返回顶部