本书深入而系统讲解了C++Builder应用开发的重点和难点,尤其是数据库应用、分布式系统以及网络程序的开发,并给出许多实用的编程技巧。\r\n 本书共17章,系统地讲解了C++的关键特性、C++Builder的集成开发环境、Windows消息系统、DLL技术、自定义组件、COM技术、多线程技术、多种编程技巧、数据库应用以及各种网络相关程序的开发等。本书的附录部分主要讲解了C++Builder附带工具的使用和标准模板类库的使用。本书附带一张光盘,内容为书中所涉及的示范程序的源代码。\r\n 本书内容详实,实例丰富,可读性强,是C++Builder中高级开发人员的一本不可多得的参考书籍,也是C++Builder初级程序员迅速跨越到C++Builder高级程序员行列的一本很好的参考书籍。
第1章 引言\r\n\r\n1.1 C++ Builder的特性\r\n1.2 C++ Builder的版本\r\n1.3 本书内容\r\n1.4 本书的一些约定\r\n\r\n第2章 面向对象的编程\r\n\r\n2.1 C++语法介绍\r\n2.1.1 基本数据类型\r\n2.1.2 复杂数据类型\r\n2.1.3 C++的操作符\r\n2.1.4 建立新的类和对象\r\n2.1.5 存取特性:私有、保护和公共\r\n2.1.6 构造函数和析构函数\r\n2.1.7 已有类型的继承\r\n2.1.8 函数的重载\r\n2.1.9 虚拟函数\r\n2.1.10 异常处理\r\n2.2 C++的高级特性和误区\r\n2.2.1 虚拟析构函数\r\n2.2.2 对象成员的初始化次序\r\n2.2.3 拷贝构造函数和“operator=”\r\n2.2.4 +=与十号的差别\r\n2.2.5 函数返回值的问题\r\n2.2.6 运行时类型识别\r\n2.3 C++ Builder扩展的语法\r\n2.3.1 classid关键字\r\n2.3.2 closure关键字\r\n2.3.3 __property和__published关键字\r\n2.4 C++与Object Pascal的比较\r\n2.4.1 C++和OP对象的区别\r\n2.4.2 构造函数的区别\r\n2.5 小结\r\n\r\n第3章 使用C++ Builder\r\n\r\n3.1 集成开发环境\r\n3.1.1 主窗口\r\n3.1.2 窗体设计器\r\n3.1.3 对象观察器\r\n3.1.4 代码编辑器\r\n3.1.5 Code Explore\r\n3.1.6 工程管理器\r\n3.1.7 保存界面设置\r\n3.1.8 To-Do列表\r\n3.2 调试C++ Builder程序\r\n3.2.1 使用集成调试器\r\n3.2.2 使用断点\r\n3.2.3 使用CodeGuard\r\n3.3 发布应用程序\r\n3.4 自定义C++ Builder环境\r\n3.4.1 保存和分发C++ Builder的配置信息\r\n3.4.2 获得类似Visual C++的调试环境\r\n3.5 小结\r\n\r\n第4章 理解Windows消息机制\r\n\r\n4.1 消息的基本概念\r\n4.2 Windows的消息系统\r\n4.3 C++ Builder的消息系统\r\n4.4 TApplication的OnMessage事件\r\n4.5 利用消息映射截获消息\r\n4.6 关于消息映射的深入讨论\r\n4.7 重载WndProc()函数\r\n4.8 非标准的消息\r\n4.8.1 通知消息\r\n4.8.2 自定义消息\r\n4.8.3 VCL内部消息\r\n4.9 自己发送消息\r\n4.9.1 Perform()\r\n4.9.2 SendMessage()和PostMessage()\r\n4.9.3 Broadcast()和BroadcastSystemMessage()\r\n4.9.4 一个范例\r\n4.10 消息和VCL事件的关系\r\n4.11 小结\r\n\r\n第5章 DLL技术\r\n\r\n5.1 创建动态链接库\r\n5.2 生成对话框和输出函数\r\n5.3 生成客户程序\r\n5.4 小结\r\n\r\n第6章 创建定制组件\r\n\r\n6.1 修改已有的组件\r\n6.2 增加新的属性\r\n6.2.1 属性的类型\r\n6.2.2 生成新属性的语法\r\n6.3 安装新组件\r\n6.4 为属性指定默认值\r\n6.5 创建数组属性\r\n6.6 创建自定义类型的属性\r\n6.7 增加新的事件\r\n6.8 编写属性编辑器\r\n6.8.1 创建新的属性编辑器\r\n6.8.2 获取文本编辑属性\r\n6.8.3 指定属性编辑器的特性\r\n6.8.4 注册属性编辑器\r\n6.9 编写组件编辑器\r\n6.9.1 增加菜单项目\r\n6.9.2 改变双击时的行为\r\n6.9.3 注册组件编辑器\r\n6.10 在控件编程中处理消息\r\n6.10.1 响应Windows的固有消息\r\n6.10.2 生成鼠标敏感形式的界面\r\n6.11 为组件指定面板位图\r\n6.12 小结\r\n\r\n第7章 COM技术概要\r\n\r\n7.1 什么是OLE与COM\r\n7.2 基本概念\r\n7.2.1 实现IUnknown接口\r\n7.2.2 COM的线程模型\r\n7.3 使用OleContainer控件\r\n7.4 建立进程内COM服务器\r\n7.4.1 使用向导生成COM服务器\r\n7.4.2 使用类型库编辑器\r\n7.4.3 设置ATL选项\r\n7.5 测试COM对象\r\n7.6 编写和测试具有事件的COM对象\r\n7.7 编写Automation对象\r\n7.7.1 Automation编程基础\r\n7.7.2 编写Automation服务器\r\n7.7.3 编写Automation控制器\r\n7.8 ActiveX控件编程\r\n7.8.1 在C++ Builder中使用ActiveX控件\r\n7.8.2 建立ActiveX控件\r\n7.8.3 生成属性页\r\n7.9 COM+新概念\r\n7.9.1 COM+的发展过程\r\n7.9.2 COM+的编程模型\r\n7.9.3 COM+的事务处理模型\r\n7.9.4 资源池(Resource Pooling)和对象池(Object Pooling)\r\n7.10 创建COM+组件\r\n7.11 COM+的事件模型\r\n7.12 小结\r\n\r\n第8章 编写多线程应用\r\n\r\n8.1 理解线程和TThread对象\r\n8.1.1 使用主线程\r\n8.1.2 设定线程的优先级\r\n8.2 编写线程函数\r\n8.2.1 使用线程局部变量\r\n8.2.2 检验其他线程发出的结束消息\r\n8.2.3 进行清理工作\r\n8.3 协调线程\r\n8.3.1 避免同时访问\r\n8.3.2 等待其他线程\r\n8.4 执行线程对象\r\n8.4.1 重载默认优先级\r\n8.4.2 开始和停止线程\r\n8.5 调试多线程应用程序\r\n8.6 小结\r\n\r\n第9章 编制专业的应用程序\r\n\r\n9.1 在程序中调用其他的应用程序\r\n9.2 在应用程序中动态创建VCL组件\r\n9.3 使用注册表和INI文件\r\n9.4 获取系统硬件信息\r\n9.4.1 检测CPU的型号\r\n9.4.2 检测内存状态\r\n9.4.3 检测可用硬盘空间\r\n9.4.4 检测CD-ROM\r\n9.4.5 检测声卡配置\r\n9.4.6 检测显示器信息\r\n9.5 拖动无标题栏的窗体\r\n9.6 创建任意形状的窗体\r\n9.7 使用系统托盘区\r\n9.7.1 使用API函数\r\n9.7.2 使用TTrayIcon组件\r\n9.8 图像的淡入淡出\r\n9.9 拖放文件\r\n9.10 用剪贴板共享信息\r\n9.11 控制Windows的退出\r\n9.12 实现历史文件菜单\r\n9.13 把主菜单放到工具栏上\r\n9.14 在程序中使用Office助手\r\n9.14.1 Microsoft Agent技术的特点\r\n9.14.2 Microsoft Agent的系统构成\r\n9.14.3 在C++ Builder中使用Microsoft Agent技术\r\n9.14.4 一个范例\r\n9.15 炫目的窗口动画\r\n9.16 闪现通知\r\n9.17 截获屏幕\r\n9.18 小结\r\n\r\n第10章 编写数据库应用程序\r\n\r\n10.1 新增功能介绍\r\n10.2 数据库应用的基础知识\r\n10.2.1 数据访问组件\r\n10.2.2 数据控制组件简介\r\n10.3 C++ Builder 5的数据库工具\r\n10.3.1 数据库工作平台(Database Desktop)\r\n10.3.2 数据库资源管理器(SQL Explore)\r\n10.3.3 数据字典\r\n10.4 编写单层数据库应用程序\r\n10.4.1 利用向导生成简单数据库应用程序\r\n10.4.2 具有主从关系的数据库应用程序\r\n10.4.3 使用查找字段(Look Field)和计算字段(Calculated Field5)\r\n10.4.4 使用Data Diagram规划数据库应用程序\r\n10.4.5 使用TQuery控件\r\n10.5 使用ADO控件组\r\n10.5.1 ADO控件介绍\r\n10.5.2 使用ADO入门\r\n10.6 利用Quick Report控件组建立报表\r\n10.6.1 定制报表预览窗口\r\n10.6.2 建立分组报表\r\n10.7 利用决策支持组件进行数据分析\r\n10.7.1 决策分析基础\r\n10.7.2 决策分析的例子\r\n10.7.3 如何建立决策分析程序\r\n10.8 小结\r\n\r\n第11章 编写多层数据库程序\r\n\r\n11.1 多级数据库模式优点\r\n11.2 基础技术\r\n11.3 实例程序\r\n11.3.1 建立应用程序服务器\r\n11.3.2 建立瘦客户程序\r\n11.4 更新异常处理\r\n11.5 高级MIDAS特性\r\n11.5.1 从客户端向应用服务器发送请求\r\n11.5.2 控制数据记录传递的方式\r\n11.5.3 利用公文包模式\r\n11.5.4 参数化查询\r\n11.5.5 主从数据库\r\n11.6 小结\r\n\r\n第12章 网络程序设计基础\r\n\r\n12.1 Internet的历史\r\n12.2 因特网的评议征求(RFC)\r\n12.3 ISO参考模型以及TCP/IP参考模型\r\n12.4 IP地址\r\n12.5 端口号\r\n12.6 利用C++ Builder开发网络通信程序\r\n12.7 小结\r\n\r\n第13章 基于组件的Internet应用开发\r\n\r\n13.1 E-mail客户端程序开发\r\n13.1.1 NMSMTP和NMPOP3组件\r\n13.1.2 E-mail收发程序\r\n13.1.3 说明\r\n13.2 编制WWW浏览器\r\n13.2.1 TCppWebBrowser组件\r\n13.2.2 一个浏览器程序\r\n13.3 小结\r\n\r\n第14章 WinSock通信程序的编制\r\n\r\n14.1 利用组件开发WinSock程序\r\n14.1.1 TClientSocket和TServerSocket组件\r\n14.1.2 程序设计思想\r\n14.1.3 建立服务器端Socket\r\n14.1.4 建立客户端Socket\r\n14.1.5 数据传输\r\n14.1.6 一个聊天软件\r\n14.2 利用API开发WinSock程序\r\n14.2.1 基于API的套接字编程过程\r\n14.2.2 套接字函数\r\n14.2.3 IP、ICMP报文格式\r\n14.2.4 编制Ping程序\r\n14.3 小结\r\n\r\n第15章 使用WinInet编写网络程序\r\n\r\n15.1 WinInet\r\n15.2 一个实例--断点续传\r\n15.2.1 下载过程\r\n15.2.2 初始化\r\n15.2.3 文件下载\r\n15.2.4 释放资源\r\n15.3 小结\r\n\r\n第16章 Web服务器程序的编制\r\n\r\n16.1 基本概念\r\n16.1.1 WWW的工作原理\r\n16.1.2 统一资源定位符URL\r\n16.2 Web服务器应用程序\r\n16.2.1 公共网关接口\r\n16.2.2 ISAPI和NSAPI\r\n16.3 服务器扩展的运行\r\n16.4 WebBroker技术\r\n16.5 创建静态网页\r\n16.5.1 Web应用程序对象\r\n16.5.2 Web模块\r\n16.5.3 Web派发器\r\n16.5.4 动作项\r\n16.5.5 用户请求报文\r\n16.5.6 服务器响应报文\r\n16.5.7 重定向Web站点\r\n16.5.8 一个静态网页的范例\r\n16.6 创建动态网页\r\n16.6.1 网页生成器\r\n16.6.2 动态网页范例\r\n16.7 在网页中使用数据库信息\r\n16.7,1 会话对象\r\n16.7.2 数据集网页生成器\r\n16.7.3 表生成器\r\n16.7.4 使用数据库中的图像\r\n16.7.5 使用MEMO字段\r\n16.7.6 包含空格的字段名处理\r\n16.7.7 利用隐藏标志记录客户信息\r\n16.7.8 使用Cookie\r\n16.7.9 范例\r\n16.8 小结\r\n\r\n第17章 基于Web的分布式多层应用\r\n\r\n17.1 基于Web的分布式系统结构\r\n17.1.1 数据库应用系统结构的发展\r\n17.1.2 C++ Builder提供的Web多层应用开发方案\r\n17.2 Internet Express技术\r\n17.2.1 InternetExpress组件\r\n17.2.2 使用JavaScript\r\n17.3 使用InternetExpress开发普通的Web应用程序\r\n17.4 使用InternetExpress开发分布式多层应用\r\n17.4.1 开发应用程序服务器\r\n17.4.2 开发Web应用程序\r\n17.5 定制InternetExpress应用程序\r\n17.5.1 使用TXMLBroker组件\r\n17.5.2 使用TMidasPageProducer组件\r\n17.6 InternetExpress技术的高级范例\r\n17.6.1 开发应用程序服务器\r\n17.6.2 开发Web应用程序\r\n17.7 InternetExpress的扩充组件\r\n17.8 小结\r\n\r\n附录A C++ Builder附带工具的使用\r\n\r\nA.1 SQL Builder\r\nA.2 SQL Explorer\r\nA.3 WinSight 32\r\nA.4 InstallShield Express\r\nA.5 使用TeamSource进行合作开发\r\nA.5.1 TeamSource的源文件管理模型\r\nA.5.2 开始使用TeamSource\r\nA.5.3 指定本地目录\r\nA.5.4 编辑用户列表\r\nA.6 集成翻译环境\r\nA.6.1 集成翻译环境的使用\r\nA.6.2 建立Resource DLL\r\nA.6.3 如何更新Resource DLL\r\nA.7 命令行工具的使用\r\nA.7.1 COff2omf\r\nA.7.2 Implib\r\nA.7.3 Touch\r\nA.7.4 Tdump\r\n\r\n附录B 标准模板类库使用指南\r\n\r\nB.1 介绍\r\nB.1.1 容器和算法\r\nB.1.2 迭代器\r\nB.1.3 概念(concept)和模型(model)\r\nB.1.4 精制(refinement)\r\nB.1.5 STL的其他部分\r\nB.2 容器类介绍\r\nB.2.1 Sequence包含的容器类\r\nB.2.2 Associative Containers包含的容器类\r\nB.2.3 Container adaptors包含的容器类\r\nB.3 标准算法介绍\r\nB.3.1 非互斥算法\r\nB.3.2 互斥算法\r\nB.3.3 排序函数\r\nB.4 小结
C++ Builder是Borland公司推出的一个激动人心的Windows应用程序开发工具。它不仅继承了Delphi简单易用、功能强大和稳定可靠的特性,同时还拥有C++语言语法灵活筒洁、执行效率高的固有优点,是Windows平台下最好的C++开发平台之一。尤其在数据库应用、分布式计算和网络程序的开发中,C++ Builder更体现出了它在开发周期和执行效率上的明显优势。
C++ Builder 5相对于其早期版本有了很大的改进,具体表现在:
.增加了ADOExpress组件以支持微软的ADO技术;
.增加了InterBase Express组件以访问本地的InterBase数据库;
.增强的MIDAS技术,不但支持与状态无关的远程数据模块,而且提供了新的Internet Express组件,使得开发基于Web的多层数据库应用更为简便;
.增强的CORBA技术;
.加强了对COM/COM+的支持;
.新增了一些VCL组件;
.IDE、编译器、调试工具都有了很大的改进和加强。
本书不是一本C++ Builder的入门教材,它定位于系统地讲述C++ Builder应用开发中的重点和难点,力求对C++ Builder的精髓进行深入浅出的分析和阐述。本书从实用的角度出发,结合目前在业界获得普遍认同的一些崭新技术,阐述了在现阶段如何利用C++ Builder进行专业的高级程序设计。在多层数据库、分布式应用、网络计算以及COM+程序设计等方面都进行了详尽的说明。因此,本书特别适合于那些想深入探求C++ Builder精髓的程序员使用。本书虽然并不需要读者已经掌握了C++ Builder的高级技巧,但是为了更好地阅读本书,我们仍然希望读者具有一定的C语言基础。
C++ Builder的一大特点就是入门相当容易而提高相对困难。当初学者学会了一些大众化的应用程序开发技术之后,往往很难获得进一步的提高,总感到有一面无形的墙堵在前面而无所适从。本书的目的正是帮助大家全面提高利用C++ Builder编程的“功力”,从而跨越横亘在初学者和高级程序员之间的鸿沟。本书在行文和讲解方式上力求深入浅出,所有的章节都配有精练的实例。可以说,本书不仅是一本理论教材,而且是一本实用手册,完全适合读者放置于案边,随时参考。
需要说明的是,在我们编著此书时,C++ Builder 6已经快要推出了,实际上当读者看到本书时,应该已经有不少程序员在使用这个新版本了。但是,这并不妨碍我们推出这本以C++ Builder 5作为讲解平台的书籍,因为对于一本以讲解高级编程技巧的书而言,版本更新对其影响并不大,本书中的所有内容几乎都可以在C++ Builder 6中使用。实际上,在笔者的书案上一直放有一本John Miano编著的《C++ Builder How-To》,这是一本以C++ Builder 3为蓝本的讲解编程技巧的经典书。它不但至今仍是笔者编程的重要参考,而且迄今为止在美国网上销售的C++ Builder类书中仍然名列前茅。相信读者在本书上的投资,不但在C++ Builder 5、C++ Builder 6上能得到高额的回报,而且在可以预料的C++ Builder的更新的版本中仍然不会过时。
本书的编写得到了清华大学出版社欧振旭编辑的大力支持,在此表示衷心的感谢!
由于时间紧迫,加之编者的水平有限,本书可能还存在一些不妥和错漏,真心地希望广大读者和同行批评指正。
编者
2002年8月