第一部分 C++Builder 5基础</font><br></font><br>第1章 C++Builder简介 </font><br></font><br>1.1 C++Builder基础 </font><br>1.1.1 Hello World! 从基本开始 </font><br>1.1.2 VCL、窗体和组件 </font><br>1.1.3 组件面板 </font><br>1.1.4 编写你最初的一个真正的程序 </font><br>1.1.5 熟悉C++Builder </font><br>1.2 C++Builder 5新增功能 </font><br>1.2.1 Web应用程序开发 </font><br>1.2.2 分布式应用程序 </font><br>1.2.3 小组开发 </font><br>1.2.4 应用程序本地化 </font><br>1.2.5 调试 </font><br>1.2.6 数据库应用程序开发 </font><br>1.2.7 开发效率 </font><br>1.2.8 随书工具光盘 </font><br>1.3 升级与兼容性问题</font><br>1.3.1 升级早期版本的C++Builder </font><br>1.3.2 在C++Builder 5中使用现存的工程 </font><br>1.3.3 创建兼容以前版本C++Builder的工程</font><br>1.3.4 其他工程升级问题的解答</font><br>1.4 从Delphi的移植 </font><br>1.4.1 注释 </font><br>1.4.2 变量 </font><br>1.4.3 常数 </font><br>1.4.4 操作符</font><br>1.4.5 控制程序流程 </font><br>1.4.6 函数和过程 </font><br>1.4.7 类 </font><br>1.4.8 预处理指令 </font><br>1.4.9 文件的类型 </font><br>1.5 C++Builder 5优点和缺点 </font><br>1.5.1 真正的可视化:真正的快速应用程序开发 </font><br>1.5.2 跟上C++标准 </font><br>1.5.3 选择正确的开发环境 </font><br>1.5.4 C++Builder 优点和缺点小结 </font><br>1.6 为Kylix做一些准备 </font><br>1.6.1 Kylix和C++Builder的相似之处 </font><br>1.6.2 Kylix和C++Builder之间的差异 </font><br>1.6.3 将C++Builder 工程移植到Kylix </font><br>1.6.4 何时发布 </font><br>1.7 小结 </font><br></font><br>第2章 C++Builder工程及IDE详述 </font><br></font><br>2.1 理解C++Builder的工程 </font><br>2.1.1 C++Builder工程中使用的文件 </font><br>2.1.2 工程管理器 </font><br>2.2 使用对象库 </font><br>2.2.1 增加项目到对象库中 </font><br>2.2.2 使用对象库中的项目 </font><br>2.2.3 在一个工程内共享项目</font><br>2.2.4 定制对象库 </font><br>2.2.5 创建并增加一个向导到对象库中 </font><br>2.3 理解和使用包 </font><br>2.3.1 使用包的注意事项 </font><br>2.3.2 C++Builder运行期包</font><br>2.3.3 使用tdump </font><br>2.4 C++Builder 5的IDE新特征介绍 </font><br>2.4.1 对象观察器中的属性类别 </font><br>2.4.2 对象观察器下拉列表中的图像 </font><br>2.4.3 XML工程文件格式 </font><br>2.4.4 以文本格式存储窗体 </font><br>2.4.5 Node-Level选项 </font><br>2.4.6 新的To-Do 列表 </font><br>2.4.7 Console Wizard </font><br>2.5 小结 </font><br></font><br>第3章 C++Builder编程 </font><br></font><br>3.1 改善可读性的编程风格 </font><br>3.1.1 使用简短的代码 </font><br>3.1.2 代码布局的使用 </font><br>3.1.3 使用合理的命名方法 </font><br>3.1.4 代码结构的使用 </font><br>3.1.5 使用注释 </font><br>3.1.6 改善代码可读性的最后一个问题 </font><br>3.2 在C++Builder中更好地编程 </font><br>3.2.1 使用String类代替char* </font><br>3.2.2 理解引用并适当地使用它们 </font><br>3.2.3 避免使用全局变量 </font><br>3.2.4 理解并在代码中使用const </font><br>3.2.5 熟悉异常的原理 </font><br>3.2.6 使用new和delete管理内存 </font><br>3.2.7 理解和使用C++风格的类型转换 </font><br>3.2.8 了解何时使用预处理器 </font><br>3.2.9 了解和使用C++标准库 </font><br>3.3 参考文献 </font><br>3.4 小结 </font><br></font><br>第4章 C++Builder高级编程 </font><br></font><br>4.1 标准C++库和模板介绍 </font><br>4.1.1 理解C++模板 </font><br>4.1.2 探讨标准C++库功能 </font><br>4.1.3 掌握包容器和迭代器</font><br>4.1.4 使用标准算法 </font><br>4.1.5 走近SCL </font><br>4.2 使用智能指针和强大的包容器 </font><br>4.2.1 堆与栈 </font><br>4.2.2 指针 </font><br>4.2.3 强包容器 </font><br>4.2.4 缺陷 </font><br>4.2.5 智能指针和强大的包容器小结 </font><br>4.3 实现高级异常处理器 </font><br>4.3.1 检查策略 </font><br>4.3.2 检查优点 </font><br>4.3.3 替换编译器的缺省异常处理器 </font><br>4.3.4 加入特定工程信息到类 </font><br>4.3.5 异常处理器的源代码 </font><br>4.3.6 高级异常处理器小结 </font><br>4.4 创建多线程应用程序 </font><br>4.4.1 理解多任务 </font><br>4.4.2 理解多线程 </font><br>4.4.3 使用API调用创建一个线程</font><br>4.4.4 理解TThread对象 </font><br>4.4.5 理解主VCL线程 </font><br>4.4.6 建立优先级 </font><br>4.4.7 计时线程 </font><br>4.4.8 同步线程 </font><br>4.5 设计模式介绍 </font><br>4.5.1 理解模式的可再用的本性 </font><br>4.5.2 软件设计中的可再用模式 </font><br>4.5.3 作为词汇表的设计模式 </font><br>4.5.4 设计模式格式 </font><br>4.5.5 设计模式分类 </font><br>4.5.6 有关设计模式的部分想法 </font><br>4.6 小结 </font><br></font><br>第5章 用户界面原则和技巧 </font><br></font><br>5.1 用户界面原则 </font><br>5.2 本章使用的工程实例 </font><br>5.3 通过给用户提供反馈改善可用性 </font><br>5.3.1 使用TProgressBar和TCGauge </font><br>5.3.2 使用Cursor </font><br>5.3.3 使用TStatusBar </font><br>5.3.4 使用Hints </font><br>5.4 通过输入焦点的控制改善可用性 </font><br>5.4.1 响应输入 </font><br>5.4.2 移动输入焦点 </font><br>5.5 通过外观改善可用性 </font><br>5.5.1 在按钮上只使用符号</font><br>5.5.2 使用符号作为文本的附加 </font><br>5.5.3 使用颜色以提供可视化线索</font><br>5.5.4 使用形状控件 </font><br>5.6 通过允许定制改善用户界面的可用性 </font><br>5.6.1 停放 </font><br>5.6.2 重定尺寸 </font><br>5.6.3 使用TControlBar </font><br>5.6.4 控制可见性 </font><br>5.6.5 定制MDI 父窗体的客户区 </font><br>5.7 通过记住用户的优选改善可用性 </font><br>5.8 处理不同的屏幕条件 </font><br>5.8.1 处理不同屏幕分辨率</font><br>5.8.2 处理不同字体尺寸 </font><br>5.8.3 处理不同颜色深度 </font><br>5.9 处理用户界面实现时的复杂性 </font><br>5.9.1 使用Action列表 </font><br>5.9.2 共享事件处理器 </font><br>5.10 小结 </font><br></font><br>第6章 编译和优化你的应用程序 </font><br></font><br>6.1 理解编译器如何工作 </font><br>6.2 加快编译速度 </font><br>6.2.1 预编译头文件</font><br>6.2.2 加快编译速度的其他技术 </font><br>6.3 C++Builder 5编译器和连接器的改进 </font><br>6.3.1 后台编译 </font><br>6.3.2 混合编译器的改进 </font><br>6.3.3 连接器的新改进 </font><br>6.4 优化:介绍 </font><br>6.5 执行速度的优化 </font><br>6.5.1 Crozzle Solver应用程序示例 </font><br>6.5.2 指数时间 </font><br>6.5.3 有关执行速度的工程选项 </font><br>6.5.4 检测瓶颈 </font><br>6.5.5 优化设计和算法 </font><br>6.5.6 讨论使代码合理化的技术 </font><br>6.5.7 使数据合理化的技术 </font><br>6.5.8 手工调整汇编代码 </font><br>6.5.9 使用外部优化 </font><br>6.5.10 执行速度优化小结 </font><br>6.6 优化应用程序的其他方面 </font><br>6.6.1 优化程序规模 </font><br>6.6.2 最后的优化方面</font><br>6.7 小结 </font><br></font><br>第7章 调试应用程序 </font><br></font><br>7.1 调试概述 </font><br>7.1.1 工程指导原则 </font><br>7.1.2 编程指导原则 </font><br>7.1.3 调试的任务 </font><br>7.2 基本调试技术 </font><br>7.2.1 输出调试信息</font><br>7.2.2 使用断言 </font><br>7.2.3 实现全局异常处理器 </font><br>7.2.4 基本调试的其他问题 </font><br>7.3 使用C++Builder交互式调试器 </font><br>7.3.1 高级断点 </font><br>7.3.2 C++Builder 5中新的断点特征 </font><br>7.3.3 C++Builder中的调试视图 </font><br>7.3.4 监视、计算和修改 </font><br>7.3.5 Debug Inspector </font><br>7.4 CodeGuard </font><br>7.4.1 启用和配置CodeGuard </font><br>7.4.2 使用CodeGuard </font><br>7.4.3 检查CodeGuard中的错误及其起因 </font><br>7.5 高级调试 </font><br>7.5.1 查找非法访问的根源 </font><br>7.5.2 连接到运行中的进程 </font><br>7.5.3 使用刚好及时调试 </font><br>7.5.4 远程调试 </font><br>7.5.5 调试DLL </font><br>7.5.6 其他调试工具 </font><br>7.6 测试 </font><br>7.6.1 测试的阶段和技术 </font><br>7.6.2 测试的提示 </font><br>7.7 小结 </font><br></font><br>第8章 使用VCL组件 </font><br></font><br>8.1 VCL概述 </font><br>8.1.1 从TObject开始 </font><br>8.1.2 建立在已有的对象的基础之上 </font><br>8.1.3 使用VCL </font><br>8.1.4 C++扩展 </font><br>8.2 流机制 </font><br>8.2.1 高级流需求 </font><br>8.2.2 非发布属性的流 </font><br>8.3 通用控件更新 </font><br>8.3.1 通用控件动态链接库 </font><br>8.3.2 C++Builder通用控件更新 </font><br>8.4 多种VCL的强化 </font><br>8.4.1 新的Help Hint和Menu特点 </font><br>8.4.2 访问注册表 </font><br>8.4.3 VCL文件增强</font><br>8.4.4 新的TApplicationEvents组件 </font><br>8.4.5 TIcon增强 </font><br>8.4.6 其他的各种VCL强化 </font><br>8.5 VCL扩展——TStringList及更多 </font><br>8.5.1 将TStringList作为容器使用 </font><br>8.5.2 存储非VCL对象 </font><br>8.5.3 将字符串连接到相同类型的对象 </font><br>8.5.4 创建一个事件链 </font><br>8.5.5 列表排序 </font><br>8.5.6 一些改进 </font><br>8.6 高级定制绘制事件 </font><br>8.6.1 TTreeView组件 </font><br>8.6.2 TListView组件 </font><br>8.6.3 TToolBar组件 </font><br>8.6.4 高级定制绘制事件范例 </font><br>8.7 Control Panel Applet向导组件 </font><br>8.8 使用第三方组件 </font><br>8.8.1 第三方组件的优点和缺点 </font><br>8.8.2 到何处查找更多的C++Builder资源 </font><br>8.9 小结 </font><br></font><br>第9章 创建定制组件 </font><br></font><br>9.1 为什么要创建定制组件 </font><br>9.2 理解组件的编写 </font><br>9.2.1 为什么以现有的组件为基础 </font><br>9.2.2 设计定制组件 </font><br>9.2.3 使用VCL图表 </font><br>9.3 编写非可视化的组件 </font><br>9.3.1 属性 </font><br>9.3.2 事件 </font><br>9.3.3 方法 </font><br>9.3.4 创建组件的异常 </font><br>9.3.5 命名空间 </font><br>9.3.6 响应消息 </font><br>9.3.7 设计期和运行期 </font><br>9.3.8 连接组件 </font><br>9.3.9 在组件之间连接事件 </font><br>9.4 编写可视组件 </font><br>9.4.1 从何开始 </font><br>9.4.2 TCanvas </font><br>9.4.3 在组件中使用图形 </font><br>9.4.4 响应鼠标消息 </font><br>9.4.5 组合所有技术 </font><br>9.4.6 修改窗口组件 </font><br>9.5 创建定制的数据感知组件 </font><br>9.5.1 使控件只读 </font><br>9.5.2 建立连接 </font><br>9.5.3 使用OnDataChange事件 </font><br>9.5.4 变成数据编辑控件 </font><br>9.5.5 数据集更新 </font><br>9.5.6 最后增加一个消息 </font><br>9.6 注册组件 </font><br>9.7 小结 </font><br></font><br>第10章 创建属性和组件编辑器 </font><br></font><br>10.1 创建定制的属性编辑器 </font><br>10.1.1 GetAttributes()方法</font><br>10.1.2 GetValue()方法 </font><br>10.1.3 SetValue()方法 </font><br>10.1.4 Edit()方法 </font><br>10.1.5 GetValues()方法 </font><br>10.1.6 使用TPropertyEditor属性 </font><br>10.1.7 选择适当的属性编辑器需要考虑的问题 </font><br>10.2 属性和异常 </font><br>10.3 注册定制属性编辑器 </font><br>10.3.1 从一个现有的非VCL类型的类和属性中获取一个TTypeInfo*(PTypeInfo) </font><br>10.3.2 通过手工创建获得一个非VCL类型的TTypeInfo*(PTypeInfo) </font><br>10.3.3 如何获取非VCL类型的TTypeInfo* </font><br>10.3.4 重载属性编辑器的规则 </font><br>10.4 在属性编辑器中使用图像 </font><br>10.4.1 ListMeasureWidth()方法</font><br>10.4.2 ListMeasureHeight()方法</font><br>10.4.3 ListDrawValue()方法 </font><br>10.4.4 PropDrawValue()方法 </font><br>10.4.5 PropDrawName()方法 </font><br>10.5 安装编辑器包 </font><br>10.6 在属性编辑器中使用连接的图像列表 </font><br>10.6.1 GetAttributes()方法 </font><br>10.6.2 GetComponentImageList()方法 </font><br>10.6.3 GetValues()方法 </font><br>10.6.4 ListMeasureWidth()和ListMeasureHeight()方法 </font><br>10.6.5 ListDrawValue()方法 </font><br>10.6.6 PropDrawValue()方法 </font><br>10.6.7 绘制图像时需要考虑的其他问题 </font><br>10.6.8 连接到父类的TCustomImageList </font><br>10.6.9 ImageIndex属性的通用解决方案 </font><br>10.7 创建定制组件编辑器 </font><br>10.7.1 Edit()方法 </font><br>10.7.2 EditProperty()方法 </font><br>10.7.3 GetVerbCount()方法 </font><br>10.7.4 GetVerb()方法 </font><br>10.7.5 PrepareItem()方法 </font><br>10.7.6 ExecuteVerb()方法 </font><br>10.7.7 Copy()方法 </font><br>10.8 注册组件编辑器</font><br>10.9 在定制组件编辑器和属性编辑器中使用预定义图像 </font><br>10.9.1 将资源增加到包中 </font><br>10.9.2 在属性和组件编辑器中使用资源 </font><br>10.10 在定制组件中注册属性类别 </font><br>10.10.1 理解类别和类别的创建 </font><br>10.10.2 在类别中注册属性 </font><br>10.11 小结 </font><br></font><br>第11章 定制组件的更多技巧 </font><br></font><br>11.1 定制组件的各种问题 </font><br>11.1.1 在对象观察器中显示类属性的发布属性 </font><br>11.1.2 在事件参数列表中使用名字空间 </font><br>11.1.3 确定事件参数列表需注意的问题 </font><br>11.1.4 重载DYNAMIC函数 </font><br>11.1.5 在定制组件中处理消息 </font><br>11.1.6 在组件中使用Windows的回调函数 </font><br>11.1.7 选择基本的属性类型时的考虑 </font><br>11.1.8 允许在设计期和运行期使用组件</font><br>11.2 框架 </font><br>11.2.1 框架到底是什么 </font><br>11.2.2 TCustomFrame类 </font><br>11.2.3 在设计期使用框架</font><br>11.2.4 在运行期使用框架</font><br>11.2.5 创建TFrame的派生类 </font><br>11.2.6 由TFrame派生类继承 </font><br>11.2.7 重用框架 </font><br>11.2.8 框架的小结</font><br>11.3 组件发布和相关问题 </font><br>11.3.1 将组件打包 </font><br>11.3.2 发布文件应该放在何处 </font><br>11.3.3 命名包和包的单元 </font><br>11.3.4 命名组件 </font><br>11.3.5 只发布设计期包 </font><br>11.3.6 为不同版本的C++Builder发布组件 </font><br>11.3.7 创建组件面板位图 </font><br>11.3.8 设计组件时的有关发布的指导原则 </font><br>11.3.9 其他有关发布的问题 </font><br>11.4 小结 </font><br></font><br>第二部分 通信、数据库和Web编程</font><br></font><br>第12章 通信编程 </font><br></font><br>12.1 串口通信 </font><br>12.1.1 协议 </font><br>12.1.2 状态机</font><br>12.1.3 结构 </font><br>12.1.4 线程同步技术 </font><br>12.1.5 缓冲 </font><br>12.1.6 在串口通信中注释 </font><br>12.2 互联网协议——SMTP、FTP、HTTP、POP3 </font><br>12.2.1 遍历组件标签页 </font><br>12.2.2 一个聊天服务器例子 </font><br>12.2.3 一个聊天客户端例子 </font><br>12.2.4 一个Email应用程序例子 </font><br>12.2.5 一个HTTP服务器例子 </font><br>12.2.6 一个FTP客户端软件例子 </font><br>12.3 小结 </font><br></font><br>第13章 Web服务器编程 </font><br></font><br>13.1 Web模块 </font><br>13.2 Web服务器应用程序向导 </font><br>13.2.1 CGI </font><br>13.2.2 WinCGI </font><br>13.2.3 ISAPI/NSAPI </font><br>13.2.4 CGI或者ISAPI</font><br>13.3 WebBroker支持组件 </font><br>13.3.1 TWebDispatcher </font><br>13.3.2 TWebModule </font><br>13.3.3 TWebResponse </font><br>13.3.4 TWebRequest </font><br>13.4 Web服务器 </font><br>13.5 WebBroker生成组件 </font><br>13.5.1 TPageProducer </font><br>13.5.2 TDataSetPageProducer </font><br>13.5.3 TDataSetTableProducer </font><br>13.5.4 TQueryTableProducer </font><br>13.6 Web应用程序向导 </font><br>13.7 保持状态 </font><br>13.7.1 胖URL </font><br>13.7.2 Cookies </font><br>13.7.3 隐藏字段</font><br>13.8 Web安全性 </font><br>13.8.1 安全Socket层 </font><br>13.8.2 授权 </font><br>13.8.3 加密Web应用程序 </font><br>13.9 HTML和XML </font><br>13.10 InternetExpress </font><br>13.10.1 消费者订单 </font><br>13.10.2 TMidasPageProducer </font><br>13.10.3 Web页编辑器 </font><br>13.10.4 分发 </font><br>13.10.5 最后的主/明细表 </font><br>13.10.6 Web页设计问题 </font><br>13.11 小结 </font><br></font><br>第14章 数据库编程 </font><br></font><br>14.1 数据库应用程序的结构模型 </font><br>14.1.1 Borland数据库引擎 </font><br>14.1.2 BDE原有(单层) </font><br>14.1.3 BDE/SQL链接(客户/服务器) </font><br>14.1.4 分布式(多层) </font><br>14.1.5 数据访问方法 </font><br>14.1.6 原有组件 </font><br>14.1.7 使用BDE的ODBC </font><br>14.1.8 使用原有组件的ODBC </font><br>14.1.9 ADO(ActiveX) </font><br>14.1.10 嵌入的SQL </font><br>14.1.11 原有API </font><br>14.1.12 数据库结构结论 </font><br>14.1.13 有关数据库结构更多信息的来源 </font><br>14.2 结构化查询语言 </font><br>14.2.1 表和索引 </font><br>14.2.2 参数 </font><br>14.2.3 insert、update、delete和select </font><br>14.2.4 合计函数</font><br>14.2.5 有关SQL的更多信息 </font><br>14.3 C++Builder的ADO特殊组件 </font><br>14.3.1 ADO与BDE比较 </font><br>14.3.2 组件一览 </font><br>14.3.3 数据库连接</font><br>14.3.4 可访问的数据集 </font><br>14.3.5 用TADOTable访问数据集 </font><br>14.3.6 使用TADOCommand以访问数据集 </font><br>14.3.7 可管理的事务 </font><br>14.3.8 使用组件事件 </font><br>14.3.9 创建基本的数据库应用程序 </font><br>14.3.10 性能优化 </font><br>14.3.11 错误处理问题 </font><br>14.3.12 多层应用程序和ADO </font><br>14.3.13 ADO特殊组件结论 </font><br>14.4 数据获取结构 </font><br>14.4.1 基本选择 </font><br>14.4.2 从多个源中提取数据 </font><br>14.5 数据模块设计器 </font><br>14.5.1 什么是数据模块</font><br>14.5.2 为什么要用数据模块 </font><br>14.5.3 如何在应用程序、DLL和分布式对象中使用数据模块 </font><br>14.5.4 数据模块中有什么 </font><br>14.5.5 如何在我的数据模块中加入属性 </font><br>14.5.6 如何使用数据模块设计器 </font><br>14.5.7 高级内容</font><br>14.5.8 用数据模块继承的窗体 </font><br>14.5.9 处理不规则的用数据模块继承的窗体 </font><br>14.5.10 如何在特殊的用户界面中避免依赖性</font><br>14.5.11 如何在数据模块中共同使用特定应用程序和框架组件 </font><br>14.5.12 包中的数据模块 </font><br>14.5.13 数据模块设计器—结论 </font><br>14.6 InterBase Express </font><br>14.6.1 Bug追踪者数据库计划 </font><br>14.6.2 数据库规则 </font><br>14.6.3 发生器、触发器和存储过程 </font><br>14.6.4 Bug追踪者实现程序 </font><br>14.6.5 Bug追踪器回顾 </font><br>14.7 小结 </font><br></font><br>第三部分 接口和分布式计算</font><br></font><br>第15章 DLL和插件 </font><br></font><br>15.1 使用DLL向导 </font><br>15.2 编写和使用DLL </font><br>15.2.1 静态连接DLL </font><br>15.2.2 从动态连接的DLL中导入函数 </font><br>15.2.3 输出类 </font><br>15.3 使用包与DLL的比较 </font><br>15.4 在DLL中使用SDI窗体</font><br>15.5 在DLL和包中使用MDI子窗体 </font><br>15.5.1 在DLL中使用MDI子窗体 </font><br>15.5.2 在包中使用MDI子窗体 </font><br>15.6 在C++Builder中使用微软Visual C++ DLL </font><br>15.7 在微软的Visual C++中使用C++Builder DLL </font><br>15.8 编写插件 </font><br>15.8.1 解剖插件</font><br>15.8.2 TIBCB5PlugInBase类 </font><br>15.8.3 TBCB5PluginManager </font><br>15.8.4 插件回顾 </font><br>15.9 小结 </font><br></font><br>第16章 COM编程 </font><br></font><br>16.1 理解COM服务器和客户端 </font><br>16.2 再论输出接口和事件接收器 </font><br>16.3 编写COM服务器 </font><br>16.3.1 选择服务器类型 </font><br>16.3.2 选择线程模式 </font><br>16.3.3 创建服务器 </font><br>16.3.4 加入COM对象</font><br>16.3.5 剖析生成的代码 </font><br>16.3.6 编写方法体 </font><br>16.3.7 加入更好的错误支持 </font><br>16.3.8 实现触发事件的方法 </font><br>16.3.9 实现一个定制接口 </font><br>16.3.10 触发定制的事件 </font><br>16.4 编写Proxy/Stub DLL</font><br>16.5 编写客户端COM </font><br>16.5.1 导入类型库 </font><br>16.5.2 查看生成的C++结构 </font><br>16.5.3 创建和使用COM服务器对象 </font><br>16.5.4 获得基于Dispinterface的事件 </font><br>16.5.5 查询定制的接口 </font><br>16.5.6 编写定制的基于接口的事件接收器 </font><br>16.6 推荐阅读 </font><br>16.7 小结 </font><br></font><br>第17章 走向分布式:DCOM </font><br></font><br>17.1 DCOM是什么 </font><br>17.2 DCOMCnfg实用工具 </font><br>17.2.1 全局安全性设置 </font><br>17.2.2 每一服务器安全性设置 </font><br>17.3 现场测试DCOM </font><br>17.3.1 创建服务应用程序 </font><br>17.3.2 创建客户端应用程序 </font><br>17.3.3 配置Launch和Access Permissions </font><br>17.3.4 配置Identity </font><br>17.3.5 运行例子 </font><br>17.4 安全性编程 </font><br>17.4.1 CoInitializeSecurity函数参数 </font><br>17.4.2 使用CoInitializeSecurity </font><br>17.4.3 理解DLL客户端和安全性 </font><br>17.4.4 实现程序化访问控制 </font><br>17.4.5 实现接口范围的安全性</font><br>17.4.6 使用Blanket </font><br>17.5 小结 </font><br></font><br>第18章 深入探讨:COM+ </font><br></font><br>18.1 COM+介绍 </font><br>18.1.1 COM+应用程序 </font><br>18.1.2 COM+目录 </font><br>18.2 使用COM+服务</font><br>18.2.1 松散耦合事件 </font><br>18.2.2 事务 </font><br>18.2.3 同步性</font><br>18.2.4 安全性</font><br>18.2.5 队列组件 </font><br>18.2.6 负载平衡性</font><br>18.3 开发和使用COM+事件 </font><br>18.3.1 创建COM+事件对象 </font><br>18.3.2 在COM+应用程序中安装事件 </font><br>18.3.3 创建发布者 </font><br>18.3.4 创建订户 </font><br>18.3.5 配置订户 </font><br>18.3.6 创建一个永久署名 </font><br>18.3.7 创建一个临时署名 </font><br>18.4 开发和使用COM+事务对象 </font><br>18.4.1 为Business层创建事务对象 </font><br>18.4.2 开发补偿资源管理器 </font><br>18.4.3 创建客户端 </font><br>18.5 小结 </font><br></font><br>第19章 使用MIDAS3的多层分布式应用程序 </font><br></font><br>19.1 MIDAS介绍 </font><br>19.2 MIDAS客户端和服务器 </font><br>19.2.1 创建一个简单的MIDAS服务器 </font><br>19.2.2 检查MIDAS服务器注册 </font><br>19.2.3 创建一个MIDAS客户端 </font><br>19.2.4 使用Briefcase模式 </font><br>19.2.5 使用ApplyUpdates </font><br>19.2.6 执行错误处理 </font><br>19.2.7 说明Reconcile错误 </font><br>19.2.8 远程访问服务器</font><br>19.2.9 创建一个MIDAS主-明细服务器 </font><br>19.2.10 输出主-明细数据集 </font><br>19.2.11 创建一个MIDAS主-明细客户端 </font><br>19.2.12 使用嵌套表 </font><br>19.2.13 理解MIDAS带宽瓶颈</font><br>19.3 MIDAS 3增强 </font><br>19.3.1 TDataSetProvider </font><br>19.3.2 TProvider与TAppServer </font><br>19.3.3 无状态数据处理 </font><br>19.3.4 InternetExpress应用程序 </font><br>19.3.5 WebConnection组件 </font><br>19.3.6 对象池 </font><br>19.3.7 Socket服务器 </font><br>19.3.8 对象代理 </font><br>19.3.9 分发 </font><br>19.4 小结 </font><br></font><br>第20章 使用CORBA的分布式应用程序 </font><br></font><br>20.1 CORBA介绍 </font><br>20.2 CORBA是如何工作的 </font><br>20.2.1 静态和动态 </font><br>20.2.2 Always或On-demand </font><br>20.2.3 平面或分层 </font><br>20.2.4 谁是服务器,谁是客户端 </font><br>20.2.5 对象请求代理 </font><br>20.2.6 基本对象适配器</font><br>20.2.7 便携对象适配器</font><br>20.2.8 CORBA与COM </font><br>20.3 Visibroker组件</font><br>20.3.1 智能代理 </font><br>20.3.2 对象激活精灵 </font><br>20.3.3 控制台 </font><br>20.4 接口定义语言 </font><br>20.4.1 interface关键字 </font><br>20.4.2 attribute关键字 </font><br>20.4.3 方法 </font><br>20.4.4 类定义</font><br>20.4.5 异常 </font><br>20.4.6 层次 </font><br>20.4.7 模块 </font><br>20.5 C++Builder 5的新特点 </font><br>20.6 C++Builder支持CORBA </font><br>20.6.1 Environment Options </font><br>20.6.2 Debugger Options </font><br>20.6.3 Project Options </font><br>20.6.4 CORBA Server Wizard </font><br>20.6.5 CORBA Client Wizard </font><br>20.6.6 CORBA IDL File Wizard </font><br>20.6.7 CORBA Object Implementation Wizard </font><br>20.6.8 Project Updates对话框 </font><br>20.6.9 Use CORBA Object Wizard </font><br>20.6.10 C++Builder4和C++Builder5之间的不同 </font><br>20.7 实现程序模式 </font><br>20.7.1 层次 </font><br>20.7.2 虚拟实现程序层次 </font><br>20.7.3 授权模型 </font><br>20.8 穷人的CORBA</font><br>20.9 小结 </font><br></font><br>第21章 集成微软Office </font><br></font><br>21.1 集成微软Office概况 </font><br>21.2 如何集成 </font><br>21.2.1 使用TOleContainer </font><br>21.2.2 使用Automation </font><br>21.2.3 使用Variant和Automation对象 </font><br>21.2.4 防范使用Automation时的宏病毒</font><br>21.2.5 使用Word Basic </font><br>21.3 集成Word </font><br>21.3.1 集合 </font><br>21.3.2 应用程序对象 </font><br>21.3.3 使用文档 </font><br>21.3.4 从Word中得到文本 </font><br>21.3.5 在Word文档中放入对象 </font><br>21.4 集成Excel </font><br>21.4.1 获得应用程序对象 </font><br>21.4.2 使用工作簿 </font><br>21.4.3 将单元格放到Execl工作簿中 </font><br>21.4.4 从Execl得到单元格 </font><br>21.5 使用C++Builder5的Server组件 </font><br>21.5.1 WordApplication和WordDocument组件 </font><br>21.5.2 再次讨论词汇表 </font><br>21.5.3 有关ATL和OleServers的最后想法 </font><br>21.6 更深入探讨 </font><br>21.6.1 Word </font><br>21.6.2 Excel</font><br>21.6.3 其他Office应用程序 </font><br>21.7 小结 </font><br></font><br>第22章 使用ActiveX技术 </font><br></font><br>22.1 理解活动服务器对象 </font><br>22.1.1 一个入门的例子:通过Active Server Object Wizard创建Response和Request对象 </font><br>22.1.2 ASP Session、Server和Application对象 </font><br>22.1.3 ASP对象和WebBroker支持 </font><br>22.1.4 再次分发活动服务器对象 </font><br>22.1.5 调试活动服务器对象 </font><br>22.2 ActiveForm介绍 </font><br>22.3 创建一个ActiveForm </font><br>22.4 在IE中分发一个要使用的ActiveForm </font><br>22.4.1 为ActiveForm设置选项 </font><br>22.4.2 连结到一个ActiveForm </font><br>22.5 创建一个数据感知ActiveForm </font><br>22.5.1 使用CAB文件和包 </font><br>22.5.2 ActiveForm更新 </font><br>22.5.3 OCCACHE和Downloaded Program Files </font><br>22.6 创建ActiveForm作为MIDAS客户端 </font><br>22.7 在Delphi中使用ActiveForm </font><br>22.8 使用ActiveForm创建组件模板</font><br>22.9 Shell编程 </font><br>22.9.1 Shell基础知识 </font><br>22.9.2 取出一个文件夹的内容 </font><br>22.9.3 传送Shell对象</font><br>22.10 小结 </font><br></font><br>第四部分 高 级 主 题</font><br></font><br>第23章 C++Builder的数据表示 </font><br></font><br>23.1 报告中的数据表示 </font><br>23.1.1 理解报告的价值 </font><br>23.1.2 用QuickReport产生报告 </font><br>23.1.3 理解自定义浏览器的体系</font><br>23.1.4 QuickReport自定义浏览器小结 </font><br>23.2 打印文本和图像 </font><br>23.2.1 打印文本 </font><br>23.2.2 打印图形 </font><br>23.3 使用高级打印技术 </font><br>23.3.1 确定打印机分辨率 </font><br>23.3.2 确定可打印纸张区域大小 </font><br>23.3.3 确定物理尺寸 </font><br>23.3.4 确定打印机绘图能力 </font><br>23.3.5 怎样打印旋转字体 </font><br>23.3.6 访问打印机配置信息</font><br>23.3.7 怎样得到缺省打印机名 </font><br>23.3.8 怎样设置缺省打印机 </font><br>23.3.9 重新设置TPrinter </font><br>23.3.10 用TPrinter访问DEVMODE的常用信息 </font><br>23.3.11 使用PRINTER_INFO_2 </font><br>23.3.12 其他与纸张有关的函数</font><br>23.3.13 处理作业 </font><br>23.3.14 怎样捕获PrintScreen键 </font><br>23.3.15 打印窗体</font><br>23.3.16 创建打印预览 </font><br>23.3.17 使用与打印机有关的变换例程 </font><br>23.3.18 其他与打印机有关的信息 </font><br>23.4 用TChart组件建立图表</font><br>23.4.1 开始学习TeeChart </font><br>23.4.2 在运行时改变图表的外观 </font><br>23.4.3 与图表交互 </font><br>23.4.4 动态建立图表 </font><br>23.4.5 打印图表</font><br>23.4.6 升级到TeeChart Pro </font><br>23.5 小结 </font><br></font><br>第24章 使用Win32 API </font><br></font><br>24.1 Win32 API与Win32中间件 </font><br>24.2 Windows和API的历史概述 </font><br>24.3 Win32 API功能范围 </font><br>24.3.1 窗口管理 </font><br>24.3.2 系统服务 </font><br>24.3.3 图形设备接口 </font><br>24.3.4 多媒体服务 </font><br>24.3.5 通用控件和对话框 </font><br>24.3.6 外壳特性 </font><br>24.3.7 国际特性 </font><br>24.3.8 网络服务 </font><br>24.4 Windows程序的构造和操作 </font><br>24.4.1 WinMain( ) </font><br>24.4.2 窗口句柄 </font><br>24.4.3 Windows消息 </font><br>24.5 使用API的实例 </font><br>24.5.1 在程序中启动其他应用程序 </font><br>24.5.2 基本的文件I/O </font><br>24.5.3 使用外壳的魔力</font><br>24.5.4 实现多媒体服务</font><br>24.5.5 使用全局惟一标识符 </font><br>24.5.6 确定系统信息 </font><br>24.5.7 闪现通知 </font><br>24.5.8 添加系统支持 </font><br>24.5.9 动画效果 </font><br>24.5.10 美化应用程序 </font><br>24.5.11 编写控制面板applet </font><br>24.6 小结 </font><br></font><br>第25章 多媒体技术 </font><br></font><br>25.1 图形设备接口 </font><br>25.1.1 Windows API和设备描述表 </font><br>25.1.2 理解TCanvas:C++Builder接口 </font><br>25.1.3 自定义绘制 </font><br>25.1.4 模拟钟表例子</font><br>25.2 图像支持 </font><br>25.2.1 Windows位图对象</font><br>25.2.2 TBitmap类</font><br>25.2.3 JPEG图像 </font><br>25.2.4 GIF图像 </font><br>25.2.5 PNG图像 </font><br>25.3 图像处理 </font><br>25.3.1 显示和获取图像信息 </font><br>25.3.2 使用TCanvas->Pixels读取单个像素值 </font><br>25.3.3 图像生成 </font><br>25.3.4 使用ScanLine快速读取像素值</font><br>25.3.5 点操作:门限操作和彩色/灰度转换 </font><br>25.3.6 全局操作:柱状图均衡 </font><br>25.3.7 几何转换:缩放 </font><br>25.3.8 空间操作:平滑和边缘检测 </font><br>25.4 音频文件、视频文件和CD音乐 </font><br>25.4.1 媒体控制接口 </font><br>25.4.2 波形音频接口 </font><br>25.4.3 波形音频接口小结 </font><br>25.5 小结 </font><br></font><br>第26章 DirectX和OpenGL高级图形技术 </font><br></font><br>26.1 OpenGL介绍 </font><br>26.1.1 OpenGL和Direct3D </font><br>26.1.2 OpenGL命令结构 </font><br>26.1.3 在C++Builder中使用OnIdle()循环绘制 </font><br>26.2 使用OpenGL </font><br>26.2.1 步骤1:OpenGL初始化 </font><br>26.2.2 步骤2:用灯光和阴影设置绘制环境 </font><br>26.2.3 步骤3:三维变换 </font><br>26.2.4 步骤4:绘制图元 </font><br>26.2.5 步骤5:置换表面 </font><br>26.2.6 OpenGL例子程序 </font><br>26.2.7 OpenGL小结 </font><br>26.2.8 OpenGL参考 </font><br>26.3 DirectX简介 </font><br>26.3.1 DirectX API的COM基础 </font><br>26.3.2 非对象DirectX函数 </font><br>26.4 使用DirectDraw </font><br>26.4.1 初始化DirectDraw</font><br>26.4.2 为DirectDraw调整显示设置 </font><br>26.4.3 绘制表面 </font><br>26.4.4 在DirectDraw表面上使用GDI </font><br>26.4.5 把位图装载到表面 </font><br>26.4.6 DirectDraw例子程序</font><br>26.4.7 DirectDraw小结 </font><br>26.5 使用DirectSound </font><br>26.5.1 初始化DirectSound对象 </font><br>26.5.2 创建从缓冲 </font><br>26.5.3 DirectSound例子程序—多种声音播放器 </font><br>26.6 深入DirectX </font><br>26.7 DirectX参考 </font><br>26.8 小结 </font><br></font><br>第五部分 C++Builder应用程序部署</font><br></font><br>第27章 创建帮助文件和文档 </font><br></font><br>27.1 技术文档编写101—快速编写的10个步骤 </font><br>27.2 文档类型 </font><br>27.3 在线文档的策略 </font><br>27.4 帮助格式 </font><br>27.5 WinHelp格式帮助文件:Windows标准 </font><br>27.5.1 帮助制作工具 </font><br>27.5.2 上下文帮助 </font><br>27.5.3 MS Help Workshop </font><br>27.5.4 把What's This帮助加入到C++Builder </font><br>27.5.5 使用高级特性扩展帮助工程 </font><br>27.6 Microsoft HTML帮助文件 </font><br>27.7 VCL中帮助属性和方法 </font><br>27.7.1 Help属性 </font><br>27.7.2 帮助方法 </font><br>27.7.3 事件 </font><br>27.8 帮助制作工具资源 </font><br>27.8.1 书籍 </font><br>27.8.2 Internet上可以得到的帮助制作工具 </font><br>27.9 小结 </font><br></font><br>第28章 软件发布 </font><br></font><br>28.1 语言的国际化和本地化</font><br>28.1.1 语言国际化综述 </font><br>28.1.2 Localize应用程序</font><br>28.1.3 要记住的事情 </font><br>28.2 Resource DLL Wizard </font><br>28.2.1 它如何工作 </font><br>28.2.2 如何创建资源DLL </font><br>28.2.3 如何测试 </font><br>28.3 要安装的其他文件和程序 </font><br>28.3.1 应用程序文件 </font><br>28.3.2 发布的步骤 </font><br>28.4 版权和软件许可3</font><br>28.4.1 版权 </font><br>28.4.2 软件许可 </font><br>28.5 软件保护 </font><br>28.5.1 保护应用程序 </font><br>28.5.2 使用第三方组件保护应用程序 </font><br>28.5.3 使用其他类型的组件保护应用程序 </font><br>28.5.4 关于软件保护的一些考虑 </font><br>28.6 共享件 </font><br>28.6.1 共享件以及如何保护 </font><br>28.6.2 实现软件保护方法 </font><br>28.6.3 共享件方法概括 </font><br>28.7 通过Internet发布和销售 </font><br>28.7.1 Web站点 </font><br>28.7.2 客户支持</font><br>28.7.3 广告 </font><br>28.7.4 免费标语广告 </font><br>28.7.5 接受信用卡和提供解锁代码 </font><br>28.7.6 Internet销售提示 </font><br>28.8 小结 </font><br></font><br>第29章 软件安装与升级 </font><br></font><br>29.1 安装和卸载 </font><br>29.1.1 安装程序制作工具 </font><br>29.1.2 Install Maker </font><br>29.1.3 卸载 </font><br>29.2 CAB和INF文件 </font><br>29.2.1 CAB文件 </font><br>29.2.2 INF文件 </font><br>29.2.3 Internet上的文件包 </font><br>29.3 版本、升级和补丁 </font><br>29.3.1 版本 </font><br>29.3.2 应用程序的升级 </font><br>29.3.3 补丁 </font><br>29.3.4 Patch Maker </font><br>29.3.5 有关升级和补丁的一些注意事项 </font><br>29.4 版本控制和TeamSource </font><br>29.4.1 谁应该使用TeamSource </font><br>29.4.2 为什么要用TeamSource </font><br>29.4.3 什么时候应该用TeamSource </font><br>29.4.4 在哪里可以使用TeamSource </font><br>29.4.5 如何使用TeamSource</font><br>29.4.6 TeamSource窗口 </font><br>29.4.7 版本控制工具 </font><br>29.4.8 书签 </font><br>29.4.9 锁 </font><br>29.5 使用InstallShield Express </font><br>29.5.1 安装InstallShield </font><br>29.5.2 开始使用InstallShield </font><br>29.5.3 测试 </font><br>29.6 小结 </font><br></font><br>第六部分 编 程 技 巧</font><br></font><br>第30章 提示、技巧和方法 </font><br></font><br>30.1 用Enter键模拟Tab键 </font><br>30.1.1 解决方案 </font><br>30.1.2 代码说明 </font><br>30.1.3 缺陷 </font><br>30.1.4 Tab键模拟小结 </font><br>30.2 确定OS的版本 </font><br>30.2.1 解决方案 </font><br>30.2.2 代码 </font><br>30.2.3 确定OS版本小结 </font><br>30.3 使用浮点数编程 </font><br>30.3.1 背景 </font><br>30.3.2 使用浮点数 </font><br>30.3.3 加法和减法 </font><br>30.3.4 执行算法的公式组合 </font><br>30.3.5 比较数据 </font><br>30.3.6 浮点数小结 </font><br>30.4 实现splash界面</font><br>30.4.1 WinMain()函数</font><br>30.4.2 创建Splash界面</font><br>30.5 防止程序的多个实例运行 </font><br>30.5.1 解决方案 </font><br>30.5.2 代码 </font><br>30.5.3 多个实例运行小结 </font><br>30.6 使用拖放操作 </font><br>30.6.1 解决方案 </font><br>30.6.2 代码 </font><br>30.6.3 程序是如何工作的 </font><br>30.6.4 拖放小结 </font><br>30.7 捕获屏幕 </font><br>30.7.1 Windows如何处理窗口 </font><br>30.7.2 解决方案 </font><br>30.7.3 捕获屏幕小结 </font><br>30.8 实现TJoyStick组件 </font><br>30.9 创建类Windows系统监视器的应用程序 </font><br>30.9.1 Windows系统资源 </font><br>30.9.2 解决方案 </font><br>30.9.3 系统监视器小结 </font><br>30.10 检验探测程序 </font><br>30.11 使用树形视组件</font><br>30.11.1 树形视的基础</font><br>30.11.2 增加节点 </font><br>30.11.3 使用轮廓 </font><br>30.11.4 导航树形视 </font><br>30.11.5 访问节点 </font><br>30.11.6 查找节点 </font><br>30.11.7 显示节点数目 </font><br>30.11.8 上移和下移节点</font><br>30.11.9 实现拖放 </font><br>30.11.10 修改节点</font><br>30.11.11 删除节点</font><br>30.11.12 支持Undo和Redo删除 </font><br>30.11.13 保存树 </font><br>30.11.14 TTree小结 </font><br>30.12 实现图标抽取应用 </font><br>30.13 创建类Windows浏览器的应用程序 </font><br>30.13.1 Windows外壳函数和接口 </font><br>30.13.2 解决方案 </font><br>30.13.3 Windows Explorer小结</font><br>30.14 使用NT服务 </font><br>30.14.1 SendMsg程序 </font><br>30.14.2 Stickums服务</font><br>30.14.3 Stickem客户程序 </font><br>30.14.4 Windows服务小结 </font><br>30.15 使用加密技术 </font><br>30.15.1 解决方案 </font><br>30.15.2 文件编码 </font><br>30.15.3 文件解密 </font><br>30.16 创建世界昼夜时钟 </font><br>30.17 小结 </font><br></font><br>第31章 一个现实的例子 </font><br></font><br>31.1 检验World Wave Statistics程序 </font><br>31.2 检验源代码 </font><br>31.2.1 头文件math.h </font><br>31.2.2 头文件mapunit.h </font><br>31.2.3 头文件wavedata.h</font><br>31.2.4 源代码文件about.cpp </font><br>31.3 检验TMainUnit的代码 </font><br>31.4 进行某些改进 </font><br>31.5 小结 </font><br></font><br>第七部分 附 录</font><br></font><br>附录A 信息源