本书深入系统地介绍了Borland C++ Builder及如何使用它开发Windows应用程序。从基本的Windows程序到数据库编程,乃至最新的Internet网络浏览器。\r\n 全书共分8部分,系统地介绍了使用C++ Builder开发平台创建关系数据库,客户机服务器和多层数据库、创建组件、Internet网络浏览器,以及如何编写ActiveX、DCOM和OLE程序,创建丰富多彩的图形界面和多媒体技术等。\r\n 本书内容丰富,可读性强,是一本C++ Builder方面权威的著作。\r\n
第1部分 入门指南\r\n\r\n序\r\n\r\n第1章 C++ Builder导论\r\n\r\n1.1 本书面向的对象\r\n1.2 如何阅读本书\r\n1.2.1 本书的指导思想\r\n1.2.2 分布式计算\r\n1.3 新的调试工具\r\n1.3.1 调试一个DLL\r\n1.3.2 在EXE文件内部调试DLL\r\n1.3.3 在DLL中设置断点以及其他的技巧\r\n1.3.4 与C++ Builder 1.0版本的区别\r\n1.4 VCL的概念\r\n1.4.1 可视化组件的时代\r\n1.4.2 组件的优点\r\n1.4.3 核心技术:组件、属性、委托模型\r\n1.5 为什么使用VCL\r\n1.5.1 保留OWL和MFC中的代码\r\n1.6 准备工作\r\n1.6.1 版权说明\r\n1.6.2 代码中的错误\r\n1.6.3 有关引用Delphi的问题\r\n1.6.4 优化代码\r\n1.6.5 配套的光盘\r\n1.7 小结\r\n\r\n第2章 事件\r\n\r\n2.1 事件:C++ Builder委托模型\r\n2.1.1 委托和Windows API函数\r\n2.1.2 在C++ Builder中创建事件\r\n2.1.3 委托与继承\r\n2.1.4 免协议编程(Contract-Free Programming)\r\n2.1.5 委托模型的小结\r\n2.2 使用委托模型\r\n2.2.1 C++ Builder的事件:EVENTS1事件\r\n2.2.2 处理OnClick事件\r\n2.2.3 处理MouseDown事件\r\n2.2.4 响应KeyDown事件\r\n2.2.5 处理OnKeyPress事件\r\n2.3 了解事件\r\n2.3.1 为什么Windows是面向事件的\r\n2.4 从事件中提取信息\r\n2.4.1 使用集合跟踪消息\r\n2.4.2 SETEXP程序\r\n2.4.3 使用TShiftState\r\n2.4.4 并集、交集和差集\r\n2.5 EVENTS2程序:事件的详细内容\r\n2.5.1 移动鼠标事件的详细情况\r\n2.5.2 捕捉虚拟键\r\n2.5.3 直接处理事件\r\n2.6 MENUDEF程序:菜单、WM-COM-MAND和ndProc\r\n2.6.1 了解MENUDEF程序\r\n2.6.2 获取菜单项的ID值\r\n2.6.3 捕捉WM-COMMAND消息\r\n2.6.4 将WndProc作为程序的主函数\r\n2.7 小结\r\n\r\n第3章 异常\r\n\r\n3.1 如何使用异常\r\n3.2 有关异常的理论\r\n3.2.1 异常的作用\r\n3.2.2 缺省的异常处理程序\r\n3.2.3 整个程序是一个try模块\r\n3.2.4 未处理的异常所造成的危险\r\n3.3 异常类\r\n3.4 异常的基本语法\r\n3.4.1 一个简单的try..catch模块\r\n3.4.2 将异常与出错字符串相对应\r\n3.4.3 查找出错的位置\r\n3.4.4 异常处理的小结\r\n3.5 发送异常\r\n3.5.1 发送一个整数\r\n3.5.2 发送VCL异常类\r\n3.5.3 了解VCL异常类\r\n3.5.4 多重catch语句\r\n3.5.5 在通用的catch语句中捕获异常\r\n3.6 创建和生成自己的异常\r\n3.7 再次发送异常\r\n3.8 异常和析构函数\r\n3.9 流、异常和释放内存\r\n3.10 代替缺省的异常处理程序\r\n3.11 使用资源跟踪出错字符串\r\n3.12 小结\r\n\r\n第4章 C++类和可视化组件模型\r\n\r\n4.1 多重继承\r\n4.1.1 处理其他类型的继承\r\n4.2 不使用多重继承的类库设计\r\n4.2.1 输出流\r\n4.2.2 一般性和特殊性\r\n4.2.3 多重继承和多文档\r\n4.2.4 如何使用多重继承\r\n4.3 异常处理\r\n4.3.1 操作系统的异常\r\n4.3.2 混合异常模型\r\n4.3.3 VCL异常\r\n4.4 运行时的类型信息\r\n4.5 纯虚拟函数\r\n4.6 接口与实现\r\n4.7 静态分配\r\n4.8 构造对象\r\n4.9 小结\r\n\r\n第2部分 关系数据库\r\n\r\n第5章 数据库基础知识\r\n\r\n5.1 建立数据库工具\r\n5.2 数据库基础知识\r\n5.3 命名和结构约定\r\n5.4 使用TQuery对象开发SQL\r\n5.4.1 数据模块\r\n5.5 TDataModule的用途\r\n5.5.1 TDataModule的习惯用法\r\n5.6 Object Repository\r\n5.7 Database EExplorer\r\n5.8 使用SQL Monitor\r\n5.9 了解BDE和别名\r\n5.10 别名\r\n5.11 TCP/IP安装的一些说明\r\n5.12 与ODBC的连接\r\n5.13 TBatchMove组件\r\n5.14 小结\r\n\r\n第6章 使用TTable和TDataSet\r\n\r\n6.1 可视化数据库控件与非可视化数据库控件\r\n6.2 了解修订后的TDataSet类\r\n6.2.1 TDataSet的主要子类\r\n6.2.2 数据集(Dataset)的含义\r\n6.3 TDataSet的核心方法\r\n6.3.1 打开和关闭数据集\r\n6.3.2 导航例程\r\n6.3.3 检查数据集的开始或结束部分\r\n6.3.4 通过MveBy方法导航记录\r\n6.4 字段(Fields)\r\n6.4.1 字段对象的常用方法\r\n6.4.2 访问字段名\r\n6.4.3 访问字段内容\r\n6.4.4 FIELDOBJECT样本程序\r\n6.4.5 FIELDER样本程序\r\n6.5 修改数据\r\n6.5.1 编辑数据集的重要方法\r\n6.5.2 编辑和寄送记录的编编程问题\r\n6.5.3 插入、添加和删除记录\r\n6.6 查找\r\n6.6.1 使用SetKey或FindKey进行查找\r\n6.6.2 使用SetKey和GotoKey\r\n6.6.3 使用FindKey和FindNearest\r\n6.6.4 扫辅助索引查找\r\n6.6.5 使用模糊查找\r\n6.7 范围的确定\r\n6.7.1 选择记录的范围\r\n6.7.2 RANGER样本的范围\r\n6.7.3 RANGER2样本程序\r\n6.8 过滤\r\n6.8.1 OnFilterRecord事件\r\n6.8.2 FILTER样本程序\r\n6.9 书签\r\n6.10 使用Refresh(刷新)函数\r\n6.11 关于TDataSet和TTable更多的内容\r\n6.12 一对多关系:链接指针(Linked Cursors)\r\n6.13 TDataSource基础知识\r\n6.13.1 检查数据集的状态\r\n6.14 跟踪数据集的状态\r\n6.15 使用TDatabase\r\n6.16 不使用可视化工具创建数据库\r\n6.17 小结\r\n\r\n第7章 SQL和TQuery对象\r\n\r\n7.1 SQL属性\r\n7.1.1 使用TQuery对象编程\r\n7.1.2 从磁盘上装入通配符查询\r\n7.2 TQuery和参数\r\n7.2.1 编写用于参数化查询的SQL语句\r\n7.2.2 编写参数化查询代码\r\n7.2.3 参数生命线查询例子EASYSQL2\r\n7.2.4 采用多连接变量查询\r\n7.3 SQL属性和Format函数\r\n7.3.1 PARAMSI程序中的Session对象\r\n7.4 使用TQuery建立一对多关系\r\n7.5 建立多个表之间的连接\r\n7.6 RequestLive属性\r\n7.7 参数化查询和连接语句\r\n7.8 ExecSQL、Delete和Insert语句\r\n7.8.1 使用SQL删除记录\r\n7.8.2 使用SQL插入记录\r\n7.9 特殊的TQuery属性\r\n7.10 SQL的一些有趣内容\r\n7.11 小结\r\n\r\n第8章 使用字段对象\r\n\r\n8.1 Fields Editor\r\n8.1.1 启用Fields Editor\r\n8.1.2 计算字段(Calculated Field)\r\n8.1.3 Columns属性编辑器\r\n8.2 查找字段(Lookup Fields)\r\n8.2.1 使用Lookup程序\r\n8.2.2 有关计算字段\r\n8.2.3 有关查找字段\r\n8.2.4 TDBLookupComboBox和TDBLookupListBox\r\n8.2.6 在Lookup程序中插入和编辑数据\r\n8.3 程序运行状态下的TDBGrid\r\n8.3.1 在程序运行状态下控制TDBGrid的Options属性\r\n8.3.2 在程序运行状态下显示DBGrid的选项\r\n8.4 使用TDBGrid列\r\n8.4.1 改变TDBGrid对象中的标题\r\n8.4.2 改变TDBGrid对象中的一个单独列\r\n8.4.3 改变TDBGrid对象中行的颜色\r\n8.4.4 改变列的宽度\r\n8.4.5 隐藏或移动TDBGrid中的列\r\n8.4.6 在程序运行状态下移动列\r\n8.5 多记录对象\r\n8.6 小结\r\n\r\n第9章 了解关系数据库\r\n\r\n9.1 关系数据库入门\r\n9.1.1 关系数据库模型的优点\r\n9.1.2 简单的集合逻辑:关系数据库的基础\r\n9.1.3 在DBD或Explorer中显示索引和关键字\r\n9.2 非数字化规则:为每个表创建一个主码\r\n9.2.1 一对多关系:数据和索引\r\n9.2.2 使用主码\r\n9.2.3 使用辅助索引和外码\r\n9.2.4 关键字是数据库中的重点\r\n9.3 在BCDEMOS数据库中浏览关键字和索引\r\n9.3.1 使用Database Desktop创建索引\r\n9.3.2 使用Database Desktop创建主码和外码\r\n9.4 为什么要使用参照完整性\r\n9.5 一对多关系:代码\r\n9.5.1 关系数据库和Join\r\n9.5.2 Join和QBE\r\n9.5.3 使用SQL Builder\r\n9.6 应该使用什么样的数据库\r\n9.7 小结\r\n\r\n第10章 实际的平面文件数据库\r\n\r\n10.1 综述\r\n10.2 本章中的样本程序\r\n10.3 设计一个应用程序\r\n10.3.1 定义数据\r\n10.3.2 设计程序:索引\r\n10.4 设计程序的外观\r\n10.5 查找:使用Categry字段\r\n10.6 为程序建立命令结构\r\n10.7 检测应用程序的“草图”\r\n10.8 创建最终的程序\r\n10.9 设置只读模式\r\n10.10 数据排序\r\n10.11 数据搜索\r\n10.12 数据过滤\r\n10.13 字段的标记\r\n10.14 颜色设置\r\n10.15 使用注册表\r\n10.16 导航注册表\r\n10.17 从Run菜单下运行程序\r\n10.18 在ADDRESS2程序中使用注册表\r\n10.19 剪贴板:剪切、复制和粘贴\r\n10.20 小结\r\n\r\n第11章 会话和实际的关系数据库\r\n\r\n11.1 实际的数据\r\n11.2 检查关系地址程序\r\n11.3 KDADDS程序的代码\r\n11.3.1 使用KDADD程序\r\n11.3.2 设置KDADD程序的索引\r\n11.3.3 搜索记录\r\n11.3.4 插入数据和取消操作\r\n11.3.5 删除数据:第一次查看程序的数据模块\r\n11.3.6 数据模块:级联删除(Cascading Deletes)\r\n11.3.7 数据模块:整体寄送\r\n11.3.8 在字符串资源中放置出错字符串\r\n11.3.9 About框\r\n11.4 使用KDADDEXPLORE程序\r\n11.4.1 使用TSession \r\n11.4.2 KDADDEXPLORE程序的代码\r\n11.4.3 使用TTreeView显示系统中的数据库\r\n11.4.4 扩充TTreeView的节上噗\r\n11.4.5 在TTreeView中添加可用表的列表\r\n11.4.6 查找索引和字段\r\n11.4.7 显示别名和别名参数\r\n11.5 迁移数据、TBatchMove、临时表和NULL字段\r\n11.6 小结\r\n\r\n第3部分 客户机/服务器和多层数据库\r\n\r\n第12章 使用本地InterBase服务器\r\n\r\n12.1 关于InterBase\r\n12.2 数据库与人才需求\r\n12.3 配置本地InterBase\r\n12.4 配置InterBase别名\r\n12.5 创建数据库\r\n12.6 用WISQL浏览数据库\r\n12.7 事务处理\r\n12.8 高速缓冲更新(cached updates)\r\n12.9 多对多关系\r\n12.10 安全性与InterBase服务器管理器\r\n12.10.1 定义表的访问权限\r\n12.10.2 通过服务器管理器备份表\r\n12.11 小结\r\n\r\n第13章 高级InterBase概念\r\n\r\n13.1 MUSIC程序\r\n13.2 设计MUSIC程序\r\n13.2.1 创建数据库方案\r\n13.2.2 改变表:Null或Not to Null\r\n13.2.3 更名已有表中的字段\r\n13.2.4 创建Blob字段\r\n13.3 主码与外码\r\n13.4 生成器、触目惊心发器与存储过程\r\n13.4.1 不要在激活的索引中使用触发器\r\n13.4.2 使用存储过程\r\n13.4.3 C++ Builder端的存储过程\r\n13.5 服务器端规则与客户端规则\r\n13.6 MUSIC程序口综述\r\n13.7 使用子窗体\r\n13.8 MUSIC程序代码\r\n13.8.1 使用MUSIC程序\r\n13.8.2 屏蔽口令:TDatabase对象\r\n13.8.3 ForCreate事件\r\n13.9 使用MUSIC程序数据\r\n13.9.1 查找\r\n13.9.2 查询数据库问题:初级SQL\r\n13.9.3 不返回数据集的存储过程\r\n13.9.4 浏览确定范围内的数据\r\n13.10 小结\r\n\r\n第14章 快速报表、图形与电子报表工具\r\n\r\n14.1 Windows打印综述\r\n14.2 QuickReport基础\r\n14.3 行、列、组和一对多\r\n14.4 使用样本程序\r\n14.5 ADDRESS2样本程序\r\n14.5.1 ADDRESS2:打印地址\r\n14.5.2 ADDRESS2:对报表中数据进行分组\r\n14.6 MUSIC程序的报表\r\n14.6.1 一对多报表\r\n14.6.2 使用查询进行报表分组\r\n14.7 打印窗体\r\n14.7.1 Tprinter:打印文本、图形和位图\r\n14.7.2 打印图形\r\n14.7.3 打印位图\r\n14.8 小结\r\n\r\n第15章 客户机与服务器之间的连通性\r\n\r\n15.1 连接到服务器\r\n15.2 使用Microsoft SQL 6.5\r\n15.2.1 创建一个MS SQL别名\r\n15.2.2 访问你的数据库\r\n15.2.3 将一个Paradox数据库程序转换到MS SQL\r\n15.3 使用Oracle 7.32\r\n15.3.1 访问你的Oracle数据库\r\n15.4 使用Informix 7.20\r\n15.4.1 访问Informix数据库\r\n15.5 使用Sybase 11.02版本\r\n15.6 使用DB2的2.1.2版本\r\n15.6.1 连接DB2时可能出现的连接错误\r\n15.6.2 访问你的DB2数据库\r\n15.7 小结\r\n\r\n第16章 多层数据库设计\r\n\r\n16.1 多层数据库应用程序概述\r\n16.2 C ++ Builder和Internet\r\n16.3 分布式体系的三种类型\r\n16.4 为什么DCOM会引起争论\r\n16.5 DCOM是什么\r\n16.5.1 在Windows 95下运行DCM服务程序\r\n16.6 将已有的程序转变为多层应用程序\r\n16.6.1 应用服务程序\r\n16.6.2 设置DCOM\r\n16.6.3 客户应用程序\r\n16.6.4 VCL对象浏览器程序代码的修改\r\n16.6.5 发送客户应用程序\r\n16.7 介绍Active Forms\r\n16.7.1 建立一个Active Form\r\n16.7.2 了解OCCACHE\r\n16.7.3 安装附加文件\r\n16.8 使用CAB文件和程序包\r\n16.8.1 有关许可的问题\r\n16.8.2 使用带有Active Forms的模板\r\n16.9 套接字和Active Forms\r\n16.9.1 关于套接字的概述\r\n16.9.2 使用套接字创建Mideas Active Forms\r\n16.9.3 创建基于Midas的Active Forms\r\n16.10 小结\r\n\r\n第4部分 创建组件\r\n\r\n第17章 继承性\r\n\r\n17.1 对象\r\n17.2 创建简单的对象\r\n17.2.1 与VCL类特征的区别\r\n17.3 继承性\r\n17.4.1 类的引用\r\n17.4.2 虚拟方法\r\n17.4.3 反复设计\r\n17.4.4 集成:VCL编程的层次\r\n17.4.5 可视窗体继承性\r\n17.4.6 可社窗体继承性的优点\r\n17.5 小结\r\n\r\n第18章 封装\r\n\r\n18.1 综述\r\n18.2 封装\r\n18.2.1 隐藏数据\r\n18.2.2 内联方法\r\n18.3 简单性:一个好的对象设计的秘诀\r\n18.4 一个具体的实例\r\n18.4.1 TWidget和其析构函数\r\n18.4.2 使用Widgets\r\n18.5 属性\r\n18.6 流控制类\r\n18.6.1 从流中读取一组件\r\n18.7 关于属性的其他内容\r\n18.7.1 使用StringLists\r\n18.7.2 用字符串索引数组\r\n18.7.3 只读属性\r\n18.7.4 易使人误解的default指示符\r\n18.8 小结\r\n\r\n第19章 多态性\r\n\r\n19.1 综述\r\n19.2 多态性\r\n19.3 多态性的简单例子\r\n19.4 多态赋值勤兼容性\r\n19.4.1 子对象与父对象赋值的兼容性\r\n19.4.2 从另一角度看多态性\r\n19.5 虚拟方法与多态性\r\n19.5.1 ClassicShapeDemo程序\r\n19.5.2 使用TCustomControl\r\n19.6 VCL中的多态性\r\n19.7 封装的多态性要点综述\r\n19.8 小结\r\n\r\n第20章 创建已有组件的继承类\r\n\r\n20.1 组件理论\r\n20.2 创建一个已有组件的继承类\r\n20.2.1 创建组件\r\n20.2.2 程序包简介\r\n20.2.3 组件构造函数\r\n20.2.4 测试组件\r\n20.2.5 安装组件\r\n20.3 扩展Unleash单元\r\n20.4 从底层创建组件\r\n20.4.1 时钟组件\r\n20.5 时钟组件的代码\r\n20.5.1 时钟的启动\r\n20.5.2 时钟的绘制\r\n20.5.3 TColorClock对象\r\n20.5.4 GOLDCLOCK程序\r\n20.6 为组件创建图标\r\n20.7 使用API工具\r\n20.7.1 单一类型的属性编辑器\r\n20.7.2 类属性编辑器\r\n20.7.3 类型Class的流属性\r\n20.7.4 测试DsgnIntf.cpp\r\n20.7.5 注册属性编辑器\r\n20.7.6 使用组件编辑器\r\n20.8 Clock2:扩展组件和属性编辑\r\n20.8.1 安装组件\r\n20.8.2 创建组件编辑器\r\n20.9 小结\r\n\r\n第21章 程序包\r\n\r\n21.1 什么是程序包\r\n21.2 程序包如何工作\r\n21.3 程序包与DLL\r\n21.4 使用程序包的优点\r\n21.5 与程序包相关的文件\r\n21.6 安装程序包\r\n21.7 创建程序包\r\n21.7.1 System Tray Icon程序包(TTrayIcon)\r\n21.7.2 TTrayIcon的属性\r\n21.8 Scroll Panel程序包(TScrollPanel)\r\n21.9 小结\r\n\r\n第22章 创建组件\r\n\r\n22.1 仓库\r\n22.1.1 接口\r\n22.2 Widget和Pallet组件的层次\r\n22.2.1 了解TWidgee,TPentium和TPentiumPro\r\n22.3 Pallet控件\r\n22.3.1 TDataPaller和拖曳\r\n22.3.2 TDataPallet和数据库\r\n22.4 查询数据库\r\n22.5 查看层次\r\n22.6 小结\r\n\r\n第5部分 C++ Builder和Internet\r\n\r\n第23章 NetMasters因特网组件\r\n\r\n23.1 Internet简介\r\n23.1.1 UUCP:历史的回顾\r\n23.1.2 TCP/IP:历史简介\r\n23.1.3 以太网(Ethernet):把我们连接起来的硬件平台\r\n23.1.4 IP:网际协议\r\n23.1.5 TCP:传输控制协议\r\n23.1.6 UDP:用户数据报协议 \r\n23.1.7 端口:基本的连接单元\r\n23.2 NetMaster因特网组件简介\r\n23.2.1 组件列表\r\n23.3 例子\r\n23.3.1 例子1:离线组件\r\n23.3.2 例子2:简单的调试组件\r\n23.3.3 例子3:发送和接收数据\r\n23.3.4 例子4:基于Web的组件\r\n23.3.5 例子5:新闻、文件和Fingers\r\n23.3.6 例子6:基于邮件的组件\r\n23.3.7 例子7:UDP消息\r\n23.3.9 例子中未涉及到的问题\r\n23.4 小结\r\n\r\n第24章 WebBroker组件\r\n\r\n24.1 TClientSocket组件\r\n24.2 TServerScket组件\r\n24.3 TWebDispatcher组件\r\n24.4 TPageProducer组件\r\n24.5 TQueryTableProducer组件\r\n24.6 TDataSetTableProducer组件\r\n24.7 使用WebBroker组件的例子\r\n24.7.1 运行CGI程序的HTML文件\r\n24.7.2 创建简单的CGI程序\r\n24.8 TServerSocket组件的其他用法\r\n24.8.1 AWChatServer的初步设计\r\n24.8.2 AWChatServer的实现\r\n24.8.3 AWChatServer客户程序\r\n24.9 小结\r\n\r\n第25章 使用WININET创建FTP应用程序\r\n\r\n25.1 准备工作\r\n25.2 确定FTP在系统中正常运行\r\n25.3 使用WININET的FTP\r\n25.3.1 使用InternetOpen\r\n25.3.2 使用InternetConnect\r\n25.4 连接以后\r\n25.5 检索文件\r\n25.6 向FTP服务器发送文件\r\n25.7 删除文件\r\n25.8 建立和删除目录\r\n25.9 一个简单的FTP控件\r\n25.10 建立用户自绘(Owner-Draw)的列表框\r\n25.11 小结\r\n\r\n第6部分 ActiveX、DCOM和OLE\r\n\r\n第26章 Automation\r\n\r\n26.1 关于语言的说明\r\n26.2 C ++ Builder和ATL\r\n26.3 COM基础知识\r\n26.3.1 COM的概念\r\n26.3.2 COM和Windows\r\n26.3.3 即插即用应用程序\r\n26.3.4 COM存在的问题\r\n26.3.5 COM与UNIX\r\n26.3.6 COM+\r\n26.4 创建一个简单的COM服务程序和客户程序\r\n26.4.1 创建一个简单的服务程序\r\n26.4.2 建立一个简单的客户程序\r\n26.5 接口\r\n26.5.1 IDispatch、双重接口和Dispinterfaces\r\n26.5.2 VTables\r\n26.6 类型库(Type Libraries)\r\n26.6.1 什么是类型库\r\n26.6.2 创建类型库\r\n26.6.3 使用coclass\r\n26.6.4 使用接口\r\n26.6.5 定义接口的实现部分\r\n26.6.6 合法的Automation类型\r\n26.7 忽略TNoParams中的参数\r\n26.8 有关注册的问题\r\n26.9 对数据进行自动编组\r\n26.10 使用WideStrings\r\n26.11 从一个CoClass获取两个或多个接口\r\n26.11.1 调用CoCreateInstance\r\n26.12 小结\r\n\r\n第27章 DCOM和OLEnterprise\r\n\r\n27.1 一个简单的DCOM客户和服务器\r\n27.1.1 建立DCOM客户\r\n27.1.2 使用远程对象\r\n27.2 变量数组\r\n27.2.1 什么是变量数组\r\n27.2.2 对数组的锁定和解锁\r\n27.2.3 一个变量数组的样本程序\r\n27.3 权衡远程数据集\r\n27.3.1 ServerData程序\r\n27.3.2 GETDATA:远程数据集的客户程序\r\n27.4 程序数据和Automation数据\r\n27.5 OLEnterprise的基本概念\r\n27.5.1 OLEnterprise的使用对象\r\n27.5.2 使用OLEnterprise\r\n27.5.3 OLEnterprise故障排除\r\n27.5.4 RPCSS\r\n27.5.5 OLEnterprise和Midas\r\n27.5.6 OLEnterprise小结\r\n27.6 小结\r\n\r\n第28章 创建新的ActiveX组件\r\n\r\n28.1 ActiveX控件\r\n28.2 C ++Builder 3中用来创建ActiveX控件\r\n28.2.1 OLE的定义\r\n28.2.2 OLE的功能\r\n28.2.3 OLE SDK,OCF和MFC\r\n28.2.4 Active Template Library(ATL)和ATLVCL\r\n28.3 准备工作\r\n28.3.1 OLE包容器各不相同\r\n28.3.2 OLE的确不错,但有时结果却不可预知\r\n28.4 使用传统方法建立ActiveX控件\r\n28.4.1 步骤1:创建GUD\r\n28.4.2 步骤2:编写.IDL文件\r\n28.4.3 步骤3:运行MIDL.EXE\r\n28.4.4 步骤4:编写.REG文件\r\n28.4.5 步骤5:在包容器插入的对象列表中查看OCX\r\n28.4.6 步骤6:综述\r\n28.4.7 步骤7:准备头文件\r\n28.4.8 步骤8:编写类工厂\r\n28.4.9 步骤9:初始化对象\r\n28.4.10 步骤10:回答QueryInterface\r\n28.4.11 步骤11:从剪贴板获取数据 \r\n28.4.12 步骤12:激活对象\r\n28.4.13 步骤13:建立控件窗口\r\n28.4.14 步骤14:实现Odds和Ends\r\n28.4.15 步骤15:在窗体放入OCX控件\r\n28.5 通过VCL组件创建ActiveX控件\r\n28.5.1 Object Repository\r\n28.5.2 创建ActiveX控件\r\n28.6 使用ATL编写ActiveX控件\r\n28.6.1 ATL的优点\r\n28.6.2 ActiveX线程模型\r\n28.6.3 建立Microsoft ATL样本\r\n28.7 使用ATL创建OCX\r\n28.7.1 ATL与VCL的区别\r\n28.7.2 创建项目\r\n28.7.3 添加DllEntryPoint和导出COM函数\r\n28.7.4 添加类库\r\n28.7.5 添加ATL头文件\r\n28.7.6 添加继承来的OLE接口\r\n28.7.7 添加对QueryInterface的支持\r\n28.7.8 添加消息映射\r\n28.7.9 添加属性\r\n28.7.10 添加事件\r\n28.7.11 添加注册表的支持\r\n28.7.12 控件的初始化\r\n28.7.13 添加自定义方法\r\n28.7.14 添加.RC文件\r\n28.7.15 添加.RGS文件\r\n28.7.16 建立ActiveX控件\r\n28.8 调试ActiveX控件\r\n28.8.1 使用TD32调试OCX\r\n28.8.2 使用C ++ Builder的集成调试器调试OCX\r\n28.8.3 将C ++ Builder 3配置为即时调试器\r\n28.9 小结\r\n\r\n第7部分 图形\r\n\r\n第29章 VCL的图形类\r\n\r\n29.1 Windows的GDI和VCL的TCanvas\r\n29.1.1 什么是GDI\r\n29.1.2 VCL能使你的图形编程更简单\r\n29.2 使用TCanvas\r\n29.3 使用画刷(Brushes)\r\n29.3.1 TBrush::Color属性\r\n29.3.2 TBrush::Style属性\r\n29.3.3 TBrush::Assign方法\r\n29.4 使用画笔(Pens)\r\n29.4.1 TPen::Style属性\r\n29.4.2 TPen::Width属性\r\n29.4.3 TPen::Mode属性\r\n29.5 使用字型(Fonts)\r\n29.5.1 TFont::Height属性\r\n29.5.2 TFont::Size属性\r\n29.5.3 TFont::Name属性\r\n29.5.4 TFont::Style属性\r\n29.5.5 旋转字型\r\n29.6 TCanvas::PenPos属性\r\n29.7 TCanvas::ClipRect属性\r\n29.8 TCanvas::CopyMode属性\r\n29.9 使用TCanvas::Pixels\r\n29.10 掌握TCanvas方法\r\n29.11 BRUSHMAIN例程源码\r\n29.11.1 OnCreate事件\r\n29.11.2 FormShow方法\r\n29.11.3 设置Pen的模式(Mode)\r\n29.11.4 使用字型(Fonts)\r\n29.11.5 在Canvas上绘制图形\r\n29.11.6 使用CopyModes\r\n29.11.7 改变ClipRect\r\n29.12 使用其他形式的线形\r\n29.13 小结\r\n\r\n第30章 颜色、调色板和图像\r\n\r\n30.1 深入了解TColor\r\n30.1.1 颜色样本方案\r\n30.1.2 OnChange事件处理程序\r\n30.2 调色板\r\n30.3 再论Windows的图像文件格式\r\n30.3.1 使用位图和DB\r\n30.3.2 使用图标\r\n30.3.3 使用元文件\r\n30.4 使用TImage和TPaintBox\r\n30.5 关于位图的补充说明\r\n30.5.1 旋转位图\r\n30.5.2 动态显示\r\n30.5.3 淡入淡出\r\n30.6 小结\r\n\r\n第31章 在C++Builder中使用DirectDraw\r\n\r\n31.1 何谓DirectDraw\r\n31.2 设置DirectDraw\r\n31.2.1 DirectDrawCreate\r\n31.2.2 SetCooperativelLevel\r\n31.2.3 SetDisplayMode\r\n31.2.4 独占模式与Windowed模式\r\n31.2.5 关于DirectDraw2的问题\r\n31.3 DirectDrawSurface接口\r\n31.3.1 Lock函数\r\n31.3.2 IDirectDrawSurface2或IDirectDrawSurface3的问题\r\n31.4 在DirectDraw中使用GDI\r\n31.4.1 使用TBitmap\r\n31.5 IDirectDrawPalette接口\r\n31.5.1 创建一个自定义调色板\r\n31.6 使用DirectDraw\r\n31.6.1 动画制作\r\n31.7 多表面和翻页技术\r\n31.7.1 在背景上制作动画\r\n31.8 创建DirectDraw组件\r\n31.9 小结\r\n\r\n第32章 在C ++Builder中使用Direct 3D\r\n\r\n32.1 什么是Direct 3D\r\n32.2 初始化Direct 3D应用程序\r\n32.2.1 创建Direct 3DRM对象\r\n32.2.2 DirectDrawClipper\r\n32.2.3 Direct 3D着色选项\r\n32.2.4 HandleActivate和HandlePaint\r\n32.3 设置一个Direct 3D场景\r\n32.3.1 Direct 3DRMFrame\r\n32.3.2 光源\r\n32.3.3 摄影机\r\n32.4 用IMeshBuilder创建模型\r\n32.4.1 在磁盘上保存模型\r\n32.4.2 复杂的网格\r\n32.4.3 变换模型\r\n32.4.4 从磁盘调入网格对象\r\n32.5 纹理贴图\r\n32.5.1 包装一个模型\r\n32.6 一个三维型和纹理浏览\r\n32.7 小结\r\n\r\n第8部分 高级话题\r\n\r\n第33章 使用Delphi文件\r\n\r\n33.1 如何使用Delphi代码\r\n33.2 在C++ Builder中使用Delphi代码\r\n33.3 在C++ Builder 3中使用Delphi组件\r\n33.4 关于Pascal编译器\r\n33.4.1 什么时候可以使用is\r\n33.4.2 Real数据类型\r\n33.4.3 继承Pascal对象模型\r\n33.4.4 空集\r\n33.4.5 Pascal和C++类型\r\n33.5 头文件生成\r\n33.5.1 多重构造函数\r\n33.5.2 数组属性\r\n33.5.3 变体记录\r\n33.6 链接错误\r\n33.6.1 Pascal类中的方法\r\n33.6.2 Delphi中的句柄与C++ Builder 3中的句柄比较\r\n33.6.3 字节与字对齐问题\r\n33.7 项目示例:Monster Hunt\r\n33.7.1 创建主窗体\r\n33.7.2 关于Monster Hunt\r\n33.7.3 游戏\r\n33.8 Delphi和C++ Builder的结合\r\n33.9 小结\r\n\r\n第34章 OWL和Microsoft DLL的互用性\r\n\r\n34.1 不能使用Microsoft Visual C++ 6的DLL情况\r\n34.1.1 不要导出C++函数\r\n34.1.2 不能导出类\r\n34.1.3 不要发送脱离DLL的C++异常\r\n34.1.4 不要在一端动态分配内存,而在另一端又将其释放掉\r\n34.1.5 不要将RTL文件句柄传递给DLL\r\n34.2 从Microsoft DLL中导入函数\r\n34.2.1 为VC++的DLL创建一个工作文件.DEF\r\n34.2.2 为VC++DLL创建一个实际的导入库\r\n34.3 创建DLL的结束语\r\n34.4 OWL支持\r\n34.4.1 idetobpr:IDE转换成项目文件的工具\r\n34.4.2 OWL动态设置\r\n34.4.3 OWL、ClassLib和OCF库\r\n34.4.4 简单的C++ Builder 5的OWL应用程序转变烦恼C++ Builder 3应用程序\r\n34.5 支持MFC\r\n34.6 标准C++库\r\n34.7 如何处置以前的C++ Builder应用程序\r\n34.8 混合使用OWL和VCL\r\n34.8.1 OWL/VCL模板类\r\n34.8.2 含有VCL窗体的OWL MDI应用程序\r\n34.8.3 作为客户应用程序的OWL对话框\r\n34.9 小结\r\n\r\n第35章 动态/静态链接库和第三方问题\r\n\r\n35.1 库链接和DLL加载概述\r\n35.2 理解DLL库\r\n35.3 创建DLL库\r\n35.4 创建一个加载静态库的可执行程序\r\n35.5 一个加载动态DLL的可执行演示程序\r\n35.6 第三方DLL问题\r\n35.7 名字分解\r\n35.8 调用的约定\r\n35.8.1 解决调用约定问题\r\n35.9 使用别名\r\n35.10 静态库\r\n35.11 第三方静态库\r\n35.12 小结\r\n
无封面