C++ Builder 5程序设计大全

C++ Builder 5程序设计大全
作 者: Jarrod Hollingworth 康向东
出版社: 机械工业出版社
丛编项: 软件开发技术丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: Builder
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《C++ Builder 5程序设计大全》作者简介

内容简介

本书全面介绍了C++Builder 5开发平台的各种技术,以及使用C++Builder来创建更为完整的应用程序的方法。主要内容包括:C++Builder 5基础,通信、数据库和Web编程,接口和分布式计算,高级技巧等。本书深入浅出,内容翔实,实例丰富,是C++Builder高级开发人员不可多得的一本好书。初级开发人员也可以参考书中所列的各种资源。对于C++Builder的研究人员来说,本书也是一个非常好的借鉴和参考。附带光盘包括C++Builder 5试用版、书中示例代码以及其他一些组件和工具。

图书目录

第一部分

C++Builder

5基础

第1章

C++Builder简介



1.1

C++Builder基础


1.1.1

Hello

World!

从基本开始


1.1.2

VCL、窗体和组件


1.1.3

组件面板


1.1.4

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


1.1.5

熟悉C++Builder


1.2

C++Builder

5新增功能


1.2.1

Web应用程序开发


1.2.2

分布式应用程序


1.2.3

小组开发


1.2.4

应用程序本地化


1.2.5

调试


1.2.6

数据库应用程序开发


1.2.7

开发效率


1.2.8

随书工具光盘


1.3

升级与兼容性问题
1.3.1

升级早期版本的C++Builder


1.3.2

在C++Builder

5中使用现存的工程


1.3.3

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

其他工程升级问题的解答
1.4

从Delphi的移植


1.4.1

注释


1.4.2

变量


1.4.3

常数


1.4.4

操作符
1.4.5

控制程序流程


1.4.6

函数和过程


1.4.7


1.4.8

预处理指令


1.4.9

文件的类型


1.5

C++Builder

5优点和缺点


1.5.1

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


1.5.2

跟上C++标准


1.5.3

选择正确的开发环境


1.5.4

C++Builder

优点和缺点小结


1.6

为Kylix做一些准备


1.6.1

Kylix和C++Builder的相似之处


1.6.2

Kylix和C++Builder之间的差异


1.6.3

将C++Builder

工程移植到Kylix


1.6.4

何时发布


1.7

小结



第2章

C++Builder工程及IDE详述



2.1

理解C++Builder的工程


2.1.1

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


2.1.2

工程管理器


2.2

使用对象库


2.2.1

增加项目到对象库中


2.2.2

使用对象库中的项目


2.2.3

在一个工程内共享项目
2.2.4

定制对象库


2.2.5

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


2.3

理解和使用包


2.3.1

使用包的注意事项


2.3.2

C++Builder运行期包
2.3.3

使用tdump


2.4

C++Builder

5的IDE新特征介绍


2.4.1

对象观察器中的属性类别


2.4.2

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


2.4.3

XML工程文件格式


2.4.4

以文本格式存储窗体


2.4.5

Node-Level选项


2.4.6

新的To-Do

列表


2.4.7

Console

Wizard


2.5

小结



第3章

C++Builder编程



3.1

改善可读性的编程风格


3.1.1

使用简短的代码


3.1.2

代码布局的使用


3.1.3

使用合理的命名方法


3.1.4

代码结构的使用


3.1.5

使用注释


3.1.6

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


3.2

在C++Builder中更好地编程


3.2.1

使用String类代替char*


3.2.2

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


3.2.3

避免使用全局变量


3.2.4

理解并在代码中使用const


3.2.5

熟悉异常的原理


3.2.6

使用new和delete管理内存


3.2.7

理解和使用C++风格的类型转换


3.2.8

了解何时使用预处理器


3.2.9

了解和使用C++标准库


3.3

参考文献


3.4

小结



第4章

C++Builder高级编程



4.1

标准C++库和模板介绍


4.1.1

理解C++模板


4.1.2

探讨标准C++库功能


4.1.3

掌握包容器和迭代器
4.1.4

使用标准算法


4.1.5

走近SCL


4.2

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


4.2.1

堆与栈


4.2.2

指针


4.2.3

强包容器


4.2.4

缺陷


4.2.5

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


4.3

实现高级异常处理器


4.3.1

检查策略


4.3.2

检查优点


4.3.3

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


4.3.4

加入特定工程信息到类


4.3.5

异常处理器的源代码


4.3.6

高级异常处理器小结


4.4

创建多线程应用程序


4.4.1

理解多任务


4.4.2

理解多线程


4.4.3

使用API调用创建一个线程
4.4.4

理解TThread对象


4.4.5

理解主VCL线程


4.4.6

建立优先级


4.4.7

计时线程


4.4.8

同步线程


4.5

设计模式介绍


4.5.1

理解模式的可再用的本性


4.5.2

软件设计中的可再用模式


4.5.3

作为词汇表的设计模式


4.5.4

设计模式格式


4.5.5

设计模式分类


4.5.6

有关设计模式的部分想法


4.6

小结



第5章

用户界面原则和技巧



5.1

用户界面原则


5.2

本章使用的工程实例


5.3

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


5.3.1

使用TProgressBar和TCGauge


5.3.2

使用Cursor


5.3.3

使用TStatusBar


5.3.4

使用Hints


5.4

通过输入焦点的控制改善可用性


5.4.1

响应输入


5.4.2

移动输入焦点


5.5

通过外观改善可用性


5.5.1

在按钮上只使用符号
5.5.2

使用符号作为文本的附加


5.5.3

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

使用形状控件


5.6

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


5.6.1

停放


5.6.2

重定尺寸


5.6.3

使用TControlBar


5.6.4

控制可见性


5.6.5

定制MDI

父窗体的客户区


5.7

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


5.8

处理不同的屏幕条件


5.8.1

处理不同屏幕分辨率
5.8.2

处理不同字体尺寸


5.8.3

处理不同颜色深度


5.9

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


5.9.1

使用Action列表


5.9.2

共享事件处理器


5.10

小结



第6章

编译和优化你的应用程序



6.1

理解编译器如何工作


6.2

加快编译速度


6.2.1

预编译头文件
6.2.2

加快编译速度的其他技术


6.3

C++Builder

5编译器和连接器的改进


6.3.1

后台编译


6.3.2

混合编译器的改进


6.3.3

连接器的新改进


6.4

优化:介绍


6.5

执行速度的优化


6.5.1

Crozzle

Solver应用程序示例


6.5.2

指数时间


6.5.3

有关执行速度的工程选项


6.5.4

检测瓶颈


6.5.5

优化设计和算法


6.5.6

讨论使代码合理化的技术


6.5.7

使数据合理化的技术


6.5.8

手工调整汇编代码


6.5.9

使用外部优化


6.5.10

执行速度优化小结


6.6

优化应用程序的其他方面


6.6.1

优化程序规模


6.6.2

最后的优化方面
6.7

小结



第7章

调试应用程序



7.1

调试概述


7.1.1

工程指导原则


7.1.2

编程指导原则


7.1.3

调试的任务


7.2

基本调试技术


7.2.1

输出调试信息
7.2.2

使用断言


7.2.3

实现全局异常处理器


7.2.4

基本调试的其他问题


7.3

使用C++Builder交互式调试器


7.3.1

高级断点


7.3.2

C++Builder

5中新的断点特征


7.3.3

C++Builder中的调试视图


7.3.4

监视、计算和修改


7.3.5

Debug

Inspector


7.4

CodeGuard


7.4.1

启用和配置CodeGuard


7.4.2

使用CodeGuard


7.4.3

检查CodeGuard中的错误及其起因


7.5

高级调试


7.5.1

查找非法访问的根源


7.5.2

连接到运行中的进程


7.5.3

使用刚好及时调试


7.5.4

远程调试


7.5.5

调试DLL


7.5.6

其他调试工具


7.6

测试


7.6.1

测试的阶段和技术


7.6.2

测试的提示


7.7

小结



第8章

使用VCL组件



8.1

VCL概述


8.1.1

从TObject开始


8.1.2

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


8.1.3

使用VCL


8.1.4

C++扩展


8.2

流机制


8.2.1

高级流需求


8.2.2

非发布属性的流


8.3

通用控件更新


8.3.1

通用控件动态链接库


8.3.2

C++Builder通用控件更新


8.4

多种VCL的强化


8.4.1

新的Help

Hint和Menu特点


8.4.2

访问注册表


8.4.3

VCL文件增强
8.4.4

新的TApplicationEvents组件


8.4.5

TIcon增强


8.4.6

其他的各种VCL强化


8.5

VCL扩展——TStringList及更多


8.5.1

将TStringList作为容器使用


8.5.2

存储非VCL对象


8.5.3

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


8.5.4

创建一个事件链


8.5.5

列表排序


8.5.6

一些改进


8.6

高级定制绘制事件


8.6.1

TTreeView组件


8.6.2

TListView组件


8.6.3

TToolBar组件


8.6.4

高级定制绘制事件范例


8.7

Control

Panel

Applet向导组件


8.8

使用第三方组件


8.8.1

第三方组件的优点和缺点


8.8.2

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


8.9

小结



第9章

创建定制组件



9.1

为什么要创建定制组件


9.2

理解组件的编写


9.2.1

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


9.2.2

设计定制组件


9.2.3

使用VCL图表


9.3

编写非可视化的组件


9.3.1

属性


9.3.2

事件


9.3.3

方法


9.3.4

创建组件的异常


9.3.5

命名空间


9.3.6

响应消息


9.3.7

设计期和运行期


9.3.8

连接组件


9.3.9

在组件之间连接事件


9.4

编写可视组件


9.4.1

从何开始


9.4.2

TCanvas


9.4.3

在组件中使用图形


9.4.4

响应鼠标消息


9.4.5

组合所有技术


9.4.6

修改窗口组件


9.5

创建定制的数据感知组件


9.5.1

使控件只读


9.5.2

建立连接


9.5.3

使用OnDataChange事件


9.5.4

变成数据编辑控件


9.5.5

数据集更新


9.5.6

最后增加一个消息


9.6

注册组件


9.7

小结



第10章

创建属性和组件编辑器



10.1

创建定制的属性编辑器


10.1.1

GetAttributes()方法
10.1.2

GetValue()方法


10.1.3

SetValue()方法


10.1.4

Edit()方法


10.1.5

GetValues()方法


10.1.6

使用TPropertyEditor属性


10.1.7

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


10.2

属性和异常


10.3

注册定制属性编辑器


10.3.1

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


10.3.2

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


10.3.3

如何获取非VCL类型的TTypeInfo*


10.3.4

重载属性编辑器的规则


10.4

在属性编辑器中使用图像


10.4.1

ListMeasureWidth()方法
10.4.2

ListMeasureHeight()方法
10.4.3

ListDrawValue()方法


10.4.4

PropDrawValue()方法


10.4.5

PropDrawName()方法


10.5

安装编辑器包


10.6

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


10.6.1

GetAttributes()方法


10.6.2

GetComponentImageList()方法


10.6.3

GetValues()方法


10.6.4

ListMeasureWidth()和ListMeasureHeight()方法


10.6.5

ListDrawValue()方法


10.6.6

PropDrawValue()方法


10.6.7

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


10.6.8

连接到父类的TCustomImageList


10.6.9

ImageIndex属性的通用解决方案


10.7

创建定制组件编辑器


10.7.1

Edit()方法


10.7.2

EditProperty()方法


10.7.3

GetVerbCount()方法


10.7.4

GetVerb()方法


10.7.5

PrepareItem()方法


10.7.6

ExecuteVerb()方法


10.7.7

Copy()方法


10.8

注册组件编辑器
10.9

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


10.9.1

将资源增加到包中


10.9.2

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


10.10

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


10.10.1

理解类别和类别的创建


10.10.2

在类别中注册属性


10.11

小结



第11章

定制组件的更多技巧



11.1

定制组件的各种问题


11.1.1

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


11.1.2

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


11.1.3

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


11.1.4

重载DYNAMIC函数


11.1.5

在定制组件中处理消息


11.1.6

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


11.1.7

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


11.1.8

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

框架


11.2.1

框架到底是什么


11.2.2

TCustomFrame类


11.2.3

在设计期使用框架
11.2.4

在运行期使用框架
11.2.5

创建TFrame的派生类


11.2.6

由TFrame派生类继承


11.2.7

重用框架


11.2.8

框架的小结
11.3

组件发布和相关问题


11.3.1

将组件打包


11.3.2

发布文件应该放在何处


11.3.3

命名包和包的单元


11.3.4

命名组件


11.3.5

只发布设计期包


11.3.6

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


11.3.7

创建组件面板位图


11.3.8

设计组件时的有关发布的指导原则


11.3.9

其他有关发布的问题


11.4

小结



第二部分

通信、数据库和Web编程

第12章

通信编程



12.1

串口通信


12.1.1

协议


12.1.2

状态机
12.1.3

结构


12.1.4

线程同步技术


12.1.5

缓冲


12.1.6

在串口通信中注释


12.2

互联网协议——SMTP、FTP、HTTP、POP3


12.2.1

遍历组件标签页


12.2.2

一个聊天服务器例子


12.2.3

一个聊天客户端例子


12.2.4

一个Email应用程序例子


12.2.5

一个HTTP服务器例子


12.2.6

一个FTP客户端软件例子


12.3

小结



第13章

Web服务器编程



13.1

Web模块


13.2

Web服务器应用程序向导


13.2.1

CGI


13.2.2

WinCGI


13.2.3

ISAPI/NSAPI


13.2.4

CGI或者ISAPI
13.3

WebBroker支持组件


13.3.1

TWebDispatcher


13.3.2

TWebModule


13.3.3

TWebResponse


13.3.4

TWebRequest


13.4

Web服务器


13.5

WebBroker生成组件


13.5.1

TPageProducer


13.5.2

TDataSetPageProducer


13.5.3

TDataSetTableProducer


13.5.4

TQueryTableProducer


13.6

Web应用程序向导


13.7

保持状态


13.7.1

胖URL


13.7.2

Cookies


13.7.3

隐藏字段
13.8

Web安全性


13.8.1

安全Socket层


13.8.2

授权


13.8.3

加密Web应用程序


13.9

HTML和XML


13.10

InternetExpress


13.10.1

消费者订单


13.10.2

TMidasPageProducer


13.10.3

Web页编辑器


13.10.4

分发


13.10.5

最后的主/明细表


13.10.6

Web页设计问题


13.11

小结



第14章

数据库编程



14.1

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


14.1.1

Borland数据库引擎


14.1.2

BDE原有(单层)


14.1.3

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


14.1.4

分布式(多层)


14.1.5

数据访问方法


14.1.6

原有组件


14.1.7

使用BDE的ODBC


14.1.8

使用原有组件的ODBC


14.1.9

ADO(ActiveX)


14.1.10

嵌入的SQL


14.1.11

原有API


14.1.12

数据库结构结论


14.1.13

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


14.2

结构化查询语言


14.2.1

表和索引


14.2.2

参数


14.2.3

insert、update、delete和select


14.2.4

合计函数
14.2.5

有关SQL的更多信息


14.3

C++Builder的ADO特殊组件


14.3.1

ADO与BDE比较


14.3.2

组件一览


14.3.3

数据库连接
14.3.4

可访问的数据集


14.3.5

用TADOTable访问数据集


14.3.6

使用TADOCommand以访问数据集


14.3.7

可管理的事务


14.3.8

使用组件事件


14.3.9

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


14.3.10

性能优化


14.3.11

错误处理问题


14.3.12

多层应用程序和ADO


14.3.13

ADO特殊组件结论


14.4

数据获取结构


14.4.1

基本选择


14.4.2

从多个源中提取数据


14.5

数据模块设计器


14.5.1

什么是数据模块
14.5.2

为什么要用数据模块


14.5.3

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


14.5.4

数据模块中有什么


14.5.5

如何在我的数据模块中加入属性


14.5.6

如何使用数据模块设计器


14.5.7

高级内容
14.5.8

用数据模块继承的窗体


14.5.9

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


14.5.10

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

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


14.5.12

包中的数据模块


14.5.13

数据模块设计器—结论


14.6

InterBase

Express


14.6.1

Bug追踪者数据库计划


14.6.2

数据库规则


14.6.3

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


14.6.4

Bug追踪者实现程序


14.6.5

Bug追踪器回顾


14.7

小结



第三部分

接口和分布式计算

第15章

DLL和插件



15.1

使用DLL向导


15.2

编写和使用DLL


15.2.1

静态连接DLL


15.2.2

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


15.2.3

输出类


15.3

使用包与DLL的比较


15.4

在DLL中使用SDI窗体
15.5

在DLL和包中使用MDI子窗体


15.5.1

在DLL中使用MDI子窗体


15.5.2

在包中使用MDI子窗体


15.6

在C++Builder中使用微软Visual

C++

DLL


15.7

在微软的Visual

C++中使用C++Builder

DLL


15.8

编写插件


15.8.1

解剖插件
15.8.2

TIBCB5PlugInBase类


15.8.3

TBCB5PluginManager


15.8.4

插件回顾


15.9

小结



第16章

COM编程



16.1

理解COM服务器和客户端


16.2

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


16.3

编写COM服务器


16.3.1

选择服务器类型


16.3.2

选择线程模式


16.3.3

创建服务器


16.3.4

加入COM对象
16.3.5

剖析生成的代码


16.3.6

编写方法体


16.3.7

加入更好的错误支持


16.3.8

实现触发事件的方法


16.3.9

实现一个定制接口


16.3.10

触发定制的事件


16.4

编写Proxy/Stub

DLL
16.5

编写客户端COM


16.5.1

导入类型库


16.5.2

查看生成的C++结构


16.5.3

创建和使用COM服务器对象


16.5.4

获得基于Dispinterface的事件


16.5.5

查询定制的接口


16.5.6

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


16.6

推荐阅读


16.7

小结



第17章

走向分布式:DCOM



17.1

DCOM是什么


17.2

DCOMCnfg实用工具


17.2.1

全局安全性设置


17.2.2

每一服务器安全性设置


17.3

现场测试DCOM


17.3.1

创建服务应用程序


17.3.2

创建客户端应用程序


17.3.3

配置Launch和Access

Permissions


17.3.4

配置Identity


17.3.5

运行例子


17.4

安全性编程


17.4.1

CoInitializeSecurity函数参数


17.4.2

使用CoInitializeSecurity


17.4.3

理解DLL客户端和安全性


17.4.4

实现程序化访问控制


17.4.5

实现接口范围的安全性
17.4.6

使用Blanket


17.5

小结



第18章

深入探讨:COM+



18.1

COM+介绍


18.1.1

COM+应用程序


18.1.2

COM+目录


18.2

使用COM+服务
18.2.1

松散耦合事件


18.2.2

事务


18.2.3

同步性
18.2.4

安全性
18.2.5

队列组件


18.2.6

负载平衡性
18.3

开发和使用COM+事件


18.3.1

创建COM+事件对象


18.3.2

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


18.3.3

创建发布者


18.3.4

创建订户


18.3.5

配置订户


18.3.6

创建一个永久署名


18.3.7

创建一个临时署名


18.4

开发和使用COM+事务对象


18.4.1

为Business层创建事务对象


18.4.2

开发补偿资源管理器


18.4.3

创建客户端


18.5

小结



第19章

使用MIDAS3的多层分布式应用程序



19.1

MIDAS介绍


19.2

MIDAS客户端和服务器


19.2.1

创建一个简单的MIDAS服务器


19.2.2

检查MIDAS服务器注册


19.2.3

创建一个MIDAS客户端


19.2.4

使用Briefcase模式


19.2.5

使用ApplyUpdates


19.2.6

执行错误处理


19.2.7

说明Reconcile错误


19.2.8

远程访问服务器
19.2.9

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


19.2.10

输出主-明细数据集


19.2.11

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


19.2.12

使用嵌套表


19.2.13

理解MIDAS带宽瓶颈
19.3

MIDAS

3增强


19.3.1

TDataSetProvider


19.3.2

TProvider与TAppServer


19.3.3

无状态数据处理


19.3.4

InternetExpress应用程序


19.3.5

WebConnection组件


19.3.6

对象池


19.3.7

Socket服务器


19.3.8

对象代理


19.3.9

分发


19.4

小结



第20章

使用CORBA的分布式应用程序



20.1

CORBA介绍


20.2

CORBA是如何工作的


20.2.1

静态和动态


20.2.2

Always或On-demand


20.2.3

平面或分层


20.2.4

谁是服务器,谁是客户端


20.2.5

对象请求代理


20.2.6

基本对象适配器
20.2.7

便携对象适配器
20.2.8

CORBA与COM


20.3

Visibroker组件
20.3.1

智能代理


20.3.2

对象激活精灵


20.3.3

控制台


20.4

接口定义语言


20.4.1

interface关键字


20.4.2

attribute关键字


20.4.3

方法


20.4.4

类定义
20.4.5

异常


20.4.6

层次


20.4.7

模块


20.5

C++Builder

5的新特点


20.6

C++Builder支持CORBA


20.6.1

Environment

Options


20.6.2

Debugger

Options


20.6.3

Project

Options


20.6.4

CORBA

Server

Wizard


20.6.5

CORBA

Client

Wizard


20.6.6

CORBA

IDL

File

Wizard


20.6.7

CORBA

Object

Implementation

Wizard


20.6.8

Project

Updates对话框


20.6.9

Use

CORBA

Object

Wizard


20.6.10

C++Builder4和C++Builder5之间的不同


20.7

实现程序模式


20.7.1

层次


20.7.2

虚拟实现程序层次


20.7.3

授权模型


20.8

穷人的CORBA
20.9

小结



第21章

集成微软Office



21.1

集成微软Office概况


21.2

如何集成


21.2.1

使用TOleContainer


21.2.2

使用Automation


21.2.3

使用Variant和Automation对象


21.2.4

防范使用Automation时的宏病毒
21.2.5

使用Word

Basic


21.3

集成Word


21.3.1

集合


21.3.2

应用程序对象


21.3.3

使用文档


21.3.4

从Word中得到文本


21.3.5

在Word文档中放入对象


21.4

集成Excel


21.4.1

获得应用程序对象


21.4.2

使用工作簿


21.4.3

将单元格放到Execl工作簿中


21.4.4

从Execl得到单元格


21.5

使用C++Builder5的Server组件


21.5.1

WordApplication和WordDocument组件


21.5.2

再次讨论词汇表


21.5.3

有关ATL和OleServers的最后想法


21.6

更深入探讨


21.6.1

Word


21.6.2

Excel
21.6.3

其他Office应用程序


21.7

小结



第22章

使用ActiveX技术



22.1

理解活动服务器对象


22.1.1

一个入门的例子:通过Active

Server

Object

Wizard创建Response和Request对象


22.1.2

ASP

Session、Server和Application对象


22.1.3

ASP对象和WebBroker支持


22.1.4

再次分发活动服务器对象


22.1.5

调试活动服务器对象


22.2

ActiveForm介绍


22.3

创建一个ActiveForm


22.4

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


22.4.1

为ActiveForm设置选项


22.4.2

连结到一个ActiveForm


22.5

创建一个数据感知ActiveForm


22.5.1

使用CAB文件和包


22.5.2

ActiveForm更新


22.5.3

OCCACHE和Downloaded

Program

Files


22.6

创建ActiveForm作为MIDAS客户端


22.7

在Delphi中使用ActiveForm


22.8

使用ActiveForm创建组件模板
22.9

Shell编程


22.9.1

Shell基础知识


22.9.2

取出一个文件夹的内容


22.9.3

传送Shell对象
22.10

小结



第四部分



第23章

C++Builder的数据表示



23.1

报告中的数据表示


23.1.1

理解报告的价值


23.1.2

用QuickReport产生报告


23.1.3

理解自定义浏览器的体系
23.1.4

QuickReport自定义浏览器小结


23.2

打印文本和图像


23.2.1

打印文本


23.2.2

打印图形


23.3

使用高级打印技术


23.3.1

确定打印机分辨率


23.3.2

确定可打印纸张区域大小


23.3.3

确定物理尺寸


23.3.4

确定打印机绘图能力


23.3.5

怎样打印旋转字体


23.3.6

访问打印机配置信息
23.3.7

怎样得到缺省打印机名


23.3.8

怎样设置缺省打印机


23.3.9

重新设置TPrinter


23.3.10

用TPrinter访问DEVMODE的常用信息


23.3.11

使用PRINTER_INFO_2


23.3.12

其他与纸张有关的函数
23.3.13

处理作业


23.3.14

怎样捕获PrintScreen键


23.3.15

打印窗体
23.3.16

创建打印预览


23.3.17

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


23.3.18

其他与打印机有关的信息


23.4

用TChart组件建立图表
23.4.1

开始学习TeeChart


23.4.2

在运行时改变图表的外观


23.4.3

与图表交互


23.4.4

动态建立图表


23.4.5

打印图表
23.4.6

升级到TeeChart

Pro


23.5

小结



第24章

使用Win32

API



24.1

Win32

API与Win32中间件


24.2

Windows和API的历史概述


24.3

Win32

API功能范围


24.3.1

窗口管理


24.3.2

系统服务


24.3.3

图形设备接口


24.3.4

多媒体服务


24.3.5

通用控件和对话框


24.3.6

外壳特性


24.3.7

国际特性


24.3.8

网络服务


24.4

Windows程序的构造和操作


24.4.1

WinMain(

)


24.4.2

窗口句柄


24.4.3

Windows消息


24.5

使用API的实例


24.5.1

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


24.5.2

基本的文件I/O


24.5.3

使用外壳的魔力
24.5.4

实现多媒体服务
24.5.5

使用全局惟一标识符


24.5.6

确定系统信息


24.5.7

闪现通知


24.5.8

添加系统支持


24.5.9

动画效果


24.5.10

美化应用程序


24.5.11

编写控制面板applet


24.6

小结



第25章

多媒体技术



25.1

图形设备接口


25.1.1

Windows

API和设备描述表


25.1.2

理解TCanvas:C++Builder接口


25.1.3

自定义绘制


25.1.4

模拟钟表例子
25.2

图像支持


25.2.1

Windows位图对象
25.2.2

TBitmap类
25.2.3

JPEG图像


25.2.4

GIF图像


25.2.5

PNG图像


25.3

图像处理


25.3.1

显示和获取图像信息


25.3.2

使用TCanvas->Pixels读取单个像素值


25.3.3

图像生成


25.3.4

使用ScanLine快速读取像素值
25.3.5

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


25.3.6

全局操作:柱状图均衡


25.3.7

几何转换:缩放


25.3.8

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


25.4

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


25.4.1

媒体控制接口


25.4.2

波形音频接口


25.4.3

波形音频接口小结


25.5

小结



第26章

DirectX和OpenGL高级图形技术



26.1

OpenGL介绍


26.1.1

OpenGL和Direct3D


26.1.2

OpenGL命令结构


26.1.3

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


26.2

使用OpenGL


26.2.1

步骤1:OpenGL初始化


26.2.2

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


26.2.3

步骤3:三维变换


26.2.4

步骤4:绘制图元


26.2.5

步骤5:置换表面


26.2.6

OpenGL例子程序


26.2.7

OpenGL小结


26.2.8

OpenGL参考


26.3

DirectX简介


26.3.1

DirectX

API的COM基础


26.3.2

非对象DirectX函数


26.4

使用DirectDraw


26.4.1

初始化DirectDraw
26.4.2

为DirectDraw调整显示设置


26.4.3

绘制表面


26.4.4

在DirectDraw表面上使用GDI


26.4.5

把位图装载到表面


26.4.6

DirectDraw例子程序
26.4.7

DirectDraw小结


26.5

使用DirectSound


26.5.1

初始化DirectSound对象


26.5.2

创建从缓冲


26.5.3

DirectSound例子程序—多种声音播放器


26.6

深入DirectX


26.7

DirectX参考


26.8

小结



第五部分

C++Builder应用程序部署

第27章

创建帮助文件和文档



27.1

技术文档编写101—快速编写的10个步骤


27.2

文档类型


27.3

在线文档的策略


27.4

帮助格式


27.5

WinHelp格式帮助文件:Windows标准


27.5.1

帮助制作工具


27.5.2

上下文帮助


27.5.3

MS

Help

Workshop


27.5.4

把What's

This帮助加入到C++Builder


27.5.5

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


27.6

Microsoft

HTML帮助文件


27.7

VCL中帮助属性和方法


27.7.1

Help属性


27.7.2

帮助方法


27.7.3

事件


27.8

帮助制作工具资源


27.8.1

书籍


27.8.2

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


27.9

小结



第28章

软件发布



28.1

语言的国际化和本地化
28.1.1

语言国际化综述


28.1.2

Localize应用程序
28.1.3

要记住的事情


28.2

Resource

DLL

Wizard


28.2.1

它如何工作


28.2.2

如何创建资源DLL


28.2.3

如何测试


28.3

要安装的其他文件和程序


28.3.1

应用程序文件


28.3.2

发布的步骤


28.4

版权和软件许可3
28.4.1

版权


28.4.2

软件许可


28.5

软件保护


28.5.1

保护应用程序


28.5.2

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


28.5.3

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


28.5.4

关于软件保护的一些考虑


28.6

共享件


28.6.1

共享件以及如何保护


28.6.2

实现软件保护方法


28.6.3

共享件方法概括


28.7

通过Internet发布和销售


28.7.1

Web站点


28.7.2

客户支持
28.7.3

广告


28.7.4

免费标语广告


28.7.5

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


28.7.6

Internet销售提示


28.8

小结



第29章

软件安装与升级



29.1

安装和卸载


29.1.1

安装程序制作工具


29.1.2

Install

Maker


29.1.3

卸载


29.2

CAB和INF文件


29.2.1

CAB文件


29.2.2

INF文件


29.2.3

Internet上的文件包


29.3

版本、升级和补丁


29.3.1

版本


29.3.2

应用程序的升级


29.3.3

补丁


29.3.4

Patch

Maker


29.3.5

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


29.4

版本控制和TeamSource


29.4.1

谁应该使用TeamSource


29.4.2

为什么要用TeamSource


29.4.3

什么时候应该用TeamSource


29.4.4

在哪里可以使用TeamSource


29.4.5

如何使用TeamSource
29.4.6

TeamSource窗口


29.4.7

版本控制工具


29.4.8

书签


29.4.9


29.5

使用InstallShield

Express


29.5.1

安装InstallShield


29.5.2

开始使用InstallShield


29.5.3

测试


29.6

小结



第六部分



第30章

提示、技巧和方法



30.1

用Enter键模拟Tab键


30.1.1

解决方案


30.1.2

代码说明


30.1.3

缺陷


30.1.4

Tab键模拟小结


30.2

确定OS的版本


30.2.1

解决方案


30.2.2

代码


30.2.3

确定OS版本小结


30.3

使用浮点数编程


30.3.1

背景


30.3.2

使用浮点数


30.3.3

加法和减法


30.3.4

执行算法的公式组合


30.3.5

比较数据


30.3.6

浮点数小结


30.4

实现splash界面
30.4.1

WinMain()函数
30.4.2

创建Splash界面
30.5

防止程序的多个实例运行


30.5.1

解决方案


30.5.2

代码


30.5.3

多个实例运行小结


30.6

使用拖放操作


30.6.1

解决方案


30.6.2

代码


30.6.3

程序是如何工作的


30.6.4

拖放小结


30.7

捕获屏幕


30.7.1

Windows如何处理窗口


30.7.2

解决方案


30.7.3

捕获屏幕小结


30.8

实现TJoyStick组件


30.9

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


30.9.1

Windows系统资源


30.9.2

解决方案


30.9.3

系统监视器小结


30.10

检验探测程序


30.11

使用树形视组件
30.11.1

树形视的基础
30.11.2

增加节点


30.11.3

使用轮廓


30.11.4

导航树形视


30.11.5

访问节点


30.11.6

查找节点


30.11.7

显示节点数目


30.11.8

上移和下移节点
30.11.9

实现拖放


30.11.10

修改节点
30.11.11

删除节点
30.11.12

支持Undo和Redo删除


30.11.13

保存树


30.11.14

TTree小结


30.12

实现图标抽取应用


30.13

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


30.13.1

Windows外壳函数和接口


30.13.2

解决方案


30.13.3

Windows

Explorer小结
30.14

使用NT服务


30.14.1

SendMsg程序


30.14.2

Stickums服务
30.14.3

Stickem客户程序


30.14.4

Windows服务小结


30.15

使用加密技术


30.15.1

解决方案


30.15.2

文件编码


30.15.3

文件解密


30.16

创建世界昼夜时钟


30.17

小结



第31章

一个现实的例子



31.1

检验World

Wave

Statistics程序


31.2

检验源代码


31.2.1

头文件math.h


31.2.2

头文件mapunit.h


31.2.3

头文件wavedata.h
31.2.4

源代码文件about.cpp


31.3

检验TMainUnit的代码


31.4

进行某些改进


31.5

小结



第七部分



附录A

信息源