| 作者 |
| 徐科等译 |
| 丛书名 |
| 出版社 |
| 清华大学出版社 |
| ISBN |
| 9787302035985 |
| 简要 |
| 简介 |
| 内容简介 本书深入系统地介绍了Borland C++ Builder及如何使用它开发Windows应用程序。从基本的Windows程序到数据库编程,乃至*的Internet网络浏览器。全书共分8部分,系统地介绍了使用C++ Builder开发平台创建关系数据库,客户机服务器和多层数据库、创建组件、Internet网络浏览器,以及如何编写ActiveX、DCOM和OLE程序,创建丰富多彩的图形界面和多媒体技术等。本书内容丰富,可读性强,是一本C++ Builder方面权威的著作。 |
| 目录 |
| 第1部分入门指南 序 第1章C++ Builder导论 1.1本书面向的对象 1.2如何阅读本书 1.2.1本书的指导思想 1.2.2分布式计算 1.3新的调试工具 1.3.1调试一个DLL 1.3.2在EXE文件内部调试DLL 1.3.3在DLL中设置断点以及其他的技巧 1.3.4与C++ Builder 1.0版本的区别 1.4VCL的概念 1.4.1可视化组件的时代 1.4.2组件的优点 1.4.3核心技术:组件、属性、委托模型 1.5为什么使用VCL 1.5.1保留OWL和MFC中的代码 1.6准备工作 1.6.1版权说明 1.6.2代码中的错误 1.6.3有关引用Delphi的问题 1.6.4优化代码 1.6.5配套的光盘 1.7小结 第2章事件 2.1事件:C++ Builder委托模型 2.1.1委托和Windows API函数 2.1.2在C++ Builder中创建事件 2.1.3委托与继承 2.1.4免协议编程(Contract-Free Programming) 2.1.5委托模型的小结 2.2使用委托模型 2.2.1C++ Builder的事件:EVENTS1事件 2.2.2处理OnClick事件 2.2.3处理MouseDown事件 2.2.4响应KeyDown事件 2.2.5处理OnKeyPress事件 2.3了解事件 2.3.1为什么Windows是面向事件的 2.4从事件中提取信息 2.4.1使用集合跟踪消息 2.4.2SETEXP程序 2.4.3使用TShiftState 2.4.4并集、交集和差集 2.5EVENTS2程序:事件的详细内容 2.5.1移动鼠标事件的详细情况 2.5.2捕捉虚拟键 2.5.3直接处理事件 2.6MENUDEF程序:菜单、WM-COM-MAND和ndProc 2.6.1了解MENUDEF程序 2.6.2获取菜单项的ID值 2.6.3捕捉WM-COMMAND消息 2.6.4将WndProc作为程序的主函数 2.7小结 第3章异常 3.1如何使用异常 3.2有关异常的理论 3.2.1异常的作用 3.2.2缺省的异常处理程序 3.2.3整个程序是一个try模块 3.2.4未处理的异常所造成的危险 3.3异常类 3.4异常的基本语法 3.4.1一个简单的try..catch模块 3.4.2将异常与出错字符串相对应 3.4.3查找出错的位置 3.4.4异常处理的小结 3.5发送异常 3.5.1发送一个整数 3.5.2发送VCL异常类 3.5.3了解VCL异常类 3.5.4多重catch语句 3.5.5在通用的catch语句中捕获异常 3.6创建和生成自己的异常 3.7再次发送异常 3.8异常和析构函数 3.9流、异常和释放内存 3.10代替缺省的异常处理程序 3.11使用资源跟踪出错字符串 3.12小结 第4章C++类和可视化组件模型 4.1多重继承 4.1.1处理其他类型的继承 4.2不使用多重继承的类库设计 4.2.1输出流 4.2.2一般性和特殊性 4.2.3多重继承和多文档 4.2.4如何使用多重继承 4.3异常处理 4.3.1操作系统的异常 4.3.2混合异常模型 4.3.3VCL异常 4.4运行时的类型信息 4.5纯虚拟函数 4.6接口与实现 4.7静态分配 4.8构造对象 4.9小结 第2部分关系数据库 第5章数据库基础知识 5.1建立数据库工具 5.2数据库基础知识 5.3命名和结构约定 5.4使用TQuery对象开发SQL 5.4.1数据模块 5.5TDataModule的用途 5.5.1TDataModule的习惯用法 5.6Object Repository 5.7Database EExplorer 5.8使用SQL Monitor 5.9了解BDE和别名 5.10别名 5.11TCP/IP安装的一些说明 5.12与ODBC的连接 5.13TBatchMove组件 5.14小结 第6章使用TTable和TDataSet 6.1可视化数据库控件与非可视化数据库控件 6.2了解修订后的TDataSet类 6.2.1TDataSet的主要子类 6.2.2数据集(Dataset)的含义 6.3TDataSet的核心方法 6.3.1打开和关闭数据集 6.3.2导航例程 6.3.3检查数据集的开始或结束部分 6.3.4通过MveBy方法导航记录 6.4字段(Fields) 6.4.1字段对象的常用方法 6.4.2访问字段名 6.4.3访问字段内容 6.4.4FIELDOBJECT样本程序 6.4.5FIELDER样本程序 6.5修改数据 6.5.1编辑数据集的重要方法 6.5.2编辑和寄送记录的编编程问题 6.5.3插入、添加和删除记录 6.6查找 6.6.1使用SetKey或FindKey进行查找 6.6.2使用SetKey和GotoKey 6.6.3使用FindKey和FindNearest 6.6.4扫辅助索引查找 6.6.5使用模糊查找 6.7范围的确定 6.7.1选择记录的范围 6.7.2RANGER样本的范围 6.7.3RANGER2样本程序 6.8过滤 6.8.1OnFilterRecord事件 6.8.2FILTER样本程序 6.9书签 6.10使用Refresh(刷新)函数 6.11关于TDataSet和TTable更多的内容 6.12一对多关系:链接指针(Linked Cursors) 6.13TDataSource基础知识 6.13.1检查数据集的状态 6.14跟踪数据集的状态 6.15使用TDatabase 6.16不使用可视化工具创建数据库 6.17小结 第7章SQL和TQuery对象 7.1SQL属性 7.1.1使用TQuery对象编程 7.1.2从磁盘上装入通配符查询 7.2TQuery和参数 7.2.1编写用于参数化查询的SQL语句 7.2.2编写参数化查询代码 7.2.3参数生命线查询例子EASYSQL2 7.2.4采用多连接变量查询 7.3SQL属性和Format函数 7.3.1PARAMSI程序中的Session对象 7.4使用TQuery建立一对多关系 7.5建立多个表之间的连接 7.6RequestLive属性 7.7参数化查询和连接语句 7.8ExecSQL、Delete和Insert语句 7.8.1使用SQL删除记录 7.8.2使用SQL插入记录 7.9特殊的TQuery属性 7.10SQL的一些有趣内容 7.11小结 第8章使用字段对象 8.1Fields Editor 8.1.1启用Fields Editor 8.1.2计算字段(Calculated Field) 8.1.3Columns属性编辑器 8.2查找字段(Lookup Fields) 8.2.1使用Lookup程序 8.2.2有关计算字段 8.2.3有关查找字段 8.2.4TDBLookupComboBox和TDBLookupListBox 8.2.6在Lookup程序中插入和编辑数据 8.3程序运行状态下的TDBGrid 8.3.1在程序运行状态下控制TDBGrid的Options属性 8.3.2在程序运行状态下显示DBGrid的选项 8.4使用TDBGrid列 8.4.1改变TDBGrid对象中的标题 8.4.2改变TDBGrid对象中的一个单独列 8.4.3改变TDBGrid对象中行的颜色 8.4.4改变列的宽度 8.4.5隐藏或移动TDBGrid中的列 8.4.6在程序运行状态下移动列 8.5多记录对象 8.6小结 第9章了解关系数据库 9.1关系数据库入门 9.1.1关系数据库模型的优点 9.1.2简单的集合逻辑:关系数据库的基础 9.1.3在DBD或Explorer中显示索引和关键字 9.2非数字化规则:为每个表创建一个主码 9.2.1一对多关系:数据和索引 9.2.2使用主码 9.2.3使用辅助索引和外码 9.2.4关键字是数据库中的重点 9.3在BCDEMOS数据库中浏览关键字和索引 9.3.1使用Database Desktop创建索引 9.3.2使用Database Desktop创建主码和外码 9.4为什么要使用参照完整性 9.5一对多关系:代码 9.5.1关系数据库和Join 9.5.2Join和QBE 9.5.3使用SQL Builder 9.6应该使用什么样的数据库 9.7小结 第10章实际的平面文件数据库 10.1综述 10.2本章中的样本程序 10.3设计一个应用程序 10.3.1定义数据 10.3.2设计程序:索引 10.4设计程序的外观 10.5查找:使用Categry字段 10.6为程序建立命令结构 10.7检测应用程序的“草图” 10.8创建最终的程序 10.9设置只读模式 10.10数据排序 10.11数据搜索 10.12数据过滤 10.13字段的标记 10.14颜色设置 10.15使用注册表 10.16导航注册表 10.17从Run菜单下运行程序 10.18在ADDRESS2程序中使用注册表 10.19剪贴板:剪切、复制和粘贴 10.20小结 第11章会话和实际的关系数据库 11.1实际的数据 11.2检查关系地址程序 11.3KDADDS程序的代码 11.3.1使用KDADD程序 11.3.2设置KDADD程序的索引 11.3.3搜索记录 11.3.4插入数据和取消操作 11.3.5删除数据:第一次查看程序的数据模块 11.3.6数据模块:级联删除(Cascading Deletes) 11.3.7数据模块:整体寄送 11.3.8在字符串资源中放置出错字符串 11.3.9About框 11.4使用KDADDEXPLORE程序 11.4.1 使用TSession 11.4.2KDADDEXPLORE程序的代码 11.4.3使用TTreeView显示系统中的数据库 11.4.4扩充TTreeView的节上噗 11.4.5 在TTreeView中添加可用表的列表 11.4.6查找索引和字段 11.4.7显示别名和别名参数 11.5迁移数据、TBatchMove、临时表和NULL字段 11.6小结 第3部分客户机/服务器和多层数据库 第12章使用本地InterBase服务器 12.1关于InterBase 12.2数据库与人才需求 12.3配置本地InterBase 12.4配置InterBase别名 12.5创建数据库 12.6用WISQL浏览数据库 12.7事务处理 12.8高速缓冲更新(cached updates) 12.9多对多关系 12.10安全性与InterBase服务器管理器 12.10.1定义表的访问权限 12.10.2通过服务器管理器备份表 12.11小结 第13章高级InterBase概念 13.1MUSIC程序 13.2设计MUSIC程序 13.2.1创建数据库方案 13.2.2改变表:Null或Not to Null 13.2.3更名已有表中的字段 13.2.4创建Blob字段 13.3主码与外码 13.4生成器、触目惊心发器与存储过程 13.4.1不要在激活的索引中使用触发器 13.4.2使用存储过程 13.4.3C++ Builder端的存储过程 13.5服务器端规则与客户端规则 13.6MUSIC程序口综述 13.7使用子窗体 13.8MUSIC程序代码 13.8.1使用MUSIC程序 13.8.2屏蔽口令:TDatabase对象 13.8.3ForCreate事件 13.9使用MUSIC程序数据 13.9.1查找 13.9.2查询数据库问题:初级SQL 13.9.3不返回数据集的存储过程 13.9.4浏览确定范围内的数据 13.10小结 第14章快速报表、图形与电子报表工具 14.1Windows打印综述 14.2QuickReport基础 14.3行、列、组和一对多 14.4使用样本程序 14.5ADDRESS2样本程序 14.5.1ADDRESS2:打印地址 14.5.2ADDRESS2:对报表中数据进行分组 14.6MUSIC程序的报表 14.6.1一对多报表 14.6.2使用查询进行报表分组 14.7打印窗体 14.7.1Tprinter:打印文本、图形和位图 14.7.2打印图形 14.7.3打印位图 14.8小结 第15章客户机与服务器之间的连通性 15.1连接到服务器 15.2使用Microsoft SQL 6.5 15.2.1创建一个MS SQL别名 15.2.2访问你的数据库 15.2.3将一个Paradox数据库程序转换到MS SQL 15.3使用Oracle 7.32 15.3.1访问你的Oracle数据库 15.4使用Informix 7.20 15.4.1访问Informix数据库 15.5使用Sybase 11.02版本 15.6使用DB2的2.1.2版本 15.6.1连接DB2时可能出现的连接错误 15.6.2访问你的DB2数据库 15.7小结 第16章多层数据库设计 16.1多层数据库应用程序概述 16.2C ++ Builder和Internet 16.3分布式体系的三种类型 16.4为什么DCOM会引起争论 16.5DCOM是什么 16.5.1在Windows 95下运行DCM服务程序 16.6将已有的程序转变为多层应用程序 16.6.1应用服务程序 16.6.2设置DCOM 16.6.3客户应用程序 16.6.4VCL对象浏览器程序代码的修改 16.6.5发送客户应用程序 16.7介绍Active Forms 16.7.1建立一个Active Form 16.7.2了解OCCACHE 16.7.3安装附加文件 16.8使用CAB文件和程序包 16.8.1有关许可的问题 16.8.2使用带有Active Forms的模板 16.9套接字和Active Forms 16.9.1关于套接字的概述 16.9.2使用套接字创建Mideas Active Forms 16.9.3创建基于Midas的Active Forms 16.10小结 第4部分创建组件 第17章继承性 17.1 对象 17.2创建简单的对象 17.2.1与VCL类特征的区别 17.3继承性 17.4.1类的引用 17.4.2虚拟方法 17.4.3 反复设计 17.4.4集成:VCL编程的层次 17.4.5可视窗体继承性 17.4.6可社窗体继承性的优点 17.5小结 第18章封装 18.1综述 18.2封装 18.2.1隐藏数据 18.2.2内联方法 18.3简单性:一个好的对象设计的秘诀 18.4一个具体的实例 18.4.1TWidget和其析构函数 18.4.2使用Widgets 18.5属性 18.6流控制类 18.6.1从流中读取一组件 18.7关于属性的其他内容 18.7.1使用StringLists 18.7.2用字符串索引数组 18.7.3只读属性 18.7.4易使人误解的default指示符 18.8小结 第19章多态性 19.1 综述 19.2多态性 19.3多态性的简单例子 19.4多态赋值勤兼容性 19.4.1子对象与父对象赋值的兼容性 19.4.2从另一角度看多态性 19.5虚拟方法与多态性 19.5.1ClassicShapeDemo程序 19.5.2使用TCustomControl 19.6VCL中的多态性 19.7封装的多态性要点综述 19.8小结 第20章创建已有组件的继承类 20.1组件理论 20.2创建一个已有组件的继承类 20.2.1创建组件 20.2.2程序包简介 20.2.3组件构造函数 20.2.4测试组件 20.2.5安装组件 20.3扩展Unleash单元 20.4从底层创建组件 20.4.1时钟组件 20.5时钟组件的代码 20.5.1时钟的启动 20.5.2时钟的绘制 20.5.3TColorClock对象 20.5.4GOLDCLOCK程序 20.6为组件创建图标 20.7使用API工具 20.7.1单一类型的属性编辑器 20.7.2类属性编辑器 20.7.3类型Class的流属性 20.7.4测试DsgnIntf.cpp 20.7.5注册属性编辑器 20.7.6使用组件编辑器 20.8Clock2:扩展组件和属性编辑 20.8.1安装组件 20.8.2创建组件编辑器 20.9小结 第21章程序包 21.1什么是程序包 21.2程序包如何工作 21.3程序包与DLL 21.4使用程序包的优点 21.5与程序包相关的文件 21.6安装程序包 21.7创建程序包 21.7.1System Tray Icon程序包(TTrayIcon) 21.7.2TTrayIcon的属性 21.8Scroll Panel程序包(TScrollPanel) 21.9小结 第22章创建组件 22.1仓库 22.1.1接口 22.2Widget和Pallet组件的层次 22.2.1了解TWidgee,TPentium和TPentiumPro 22.3Pallet控件 22.3.1TDataPaller和拖曳 22.3.2TDataPallet和数据库 22.4查询数据库 22.5查看层次 22.6小结 第5部分C++ Builder和Internet 第23章NetMasters因特网组件 23.1Internet简介 23.1.1UUCP:历史的回顾 23.1.2TCP/IP:历史简介 23.1.3以太网(Ethernet):把我们连接起来的硬件平台 23.1.4IP:网际协议 23.1.5TCP:传输控制协议 23.1.6UDP:用户数据报协议 23.1.7端口:基本的连接单元 23.2NetMaster因特网组件简介 23.2.1组件列表 23.3例子 23.3.1例子1:离线组件 23.3.2例子2:简单的调试组件 23.3.3例子3:发送和接收数据 23.3.4例子4:基于Web的组件 23.3.5例子5:新闻、文件和Fingers 23.3.6例子6:基于邮件的组件 23.3.7例子7:UDP消息 23.3.9例子中未涉及到的问题 23.4小结 第24章WebBroker组件 24.1TClientSocket组件 24.2TServerScket组件 24.3TWebDispatcher组件 24.4TPageProducer组件 24.5TQueryTableProducer组件 24.6TDataSetTableProducer组件 24.7使用WebBroker组件的例子 24.7.1运行CGI程序的HTML文件 24.7.2创建简单的CGI程序 24.8TServerSocket组件的其他用法 24.8.1AWChatServer的初步设计 24.8.2AWChatServer的实现 24.8.3AWChatServer客户程序 24.9小结 第25章使用WININET创建FTP应用程序 25.1准备工作 25.2确定FTP在系统中正常运行 25.3使用WININET的FTP 25.3.1使用InternetOpen 25.3.2使用InternetConnect 25.4连接以后 25.5检索文件 25.6向FTP服务器发送文件 25.7删除文件 25.8建立和删除 25.9一个简单的FTP控件 25.10建立用户自绘(Owner-Draw)的列表框 25.11小结 第6部分ActiveX、DCOM和OLE 第26章Automation 26.1关于语言的说明 26.2C ++ Builder和ATL 26.3COM基础知识 26.3.1COM的概念 26.3.2COM和Windows 26.3.3即插即用应用程序 26.3.4COM存在的问题 26.3.5COM与UNIX 26.3.6COM+ 26.4创建一个简单的COM服务程序和客户程序 26.4.1创建一个简单的服务程序 26.4.2建立一个简单的客户程序 26.5接口 26.5.1IDispatch、双重接口和Dispinterfaces 26.5.2VTables 26.6类型库(Type Libraries) 26.6.1什么是类型库 26.6.2创建类型库 26.6.3使用coclass 26.6.4使用接口 26.6.5定义接口的实现部分 26.6.6 合法的Automation类型 26.7忽略TNoParams中的参数 26.8有关注册的问题 26.9对数据进行自动编组 26.10使用WideStrings 26.11从一个CoClass获取两个或多个接口 26.11.1调用CoCreateInstance 26.12小结 第27章DCOM和OLEnterprise 27.1一个简单的DCOM客户和服务器 27.1.1建立DCOM客户 27.1.2使用远程对象 27.2变量数组 27.2.1 什么是变量数组 27.2.2对数组的锁定和解锁 27.2.3一个变量数组的样本程序 27.3权衡远程数据集 27.3.1ServerData程序 27.3.2GETDATA:远程数据集的客户程序 27.4程序数据和Automation数据 27.5OLEnterprise的基本概念 27.5.1OLEnterprise的使用对象 27.5.2使用OLEnterprise 27.5.3OLEnterprise故障排除 27.5.4RPCSS 27.5.5OLEnterprise和Midas 27.5.6OLEnterprise小结 27.6小结 第28章创建新的ActiveX组件 28.1ActiveX控件 28.2C ++Builder 3中用来创建ActiveX控件 28.2.1OLE的定义 28.2.2OLE的功能 28.2.3OLE SDK,OCF和MFC 28.2.4Active Template Library(ATL)和ATLVCL 28.3准备工作 28.3.1OLE包容器各不相同 28.3.2OLE的确不错,但有时结果却不可预知 28.4使用传统方法建立ActiveX控件 28.4.1步骤1:创建GUD 28.4.2步骤2:编写.IDL文件 28.4.3步骤3:运行MIDL.EXE 28.4.4步骤4:编写.REG文件 28.4.5步骤5:在包容器插入的对象列表中查看OCX 28.4.6步骤6:综述 28.4.7步骤7:准备头文件 28.4.8步骤8:编写类工厂 28.4.9步骤9:初始化对象 28.4.10步骤10:回答QueryInterface 28.4.11步骤11:从剪贴板获取数据 28.4.12步骤12:激活对象 28.4.13步骤13:建立控件窗口 28.4.14步骤14:实现Odds和Ends 28.4.15步骤15:在窗体放入OCX控件 28.5通过VCL组件创建ActiveX控件 28.5.1Object Repository 28.5.2创建ActiveX控件 28.6使用ATL编写ActiveX控件 28.6.1ATL的优点 28.6.2ActiveX线程模型 28.6.3建立Microsoft ATL样本 28.7使用ATL创建OCX 28.7.1ATL与VCL的区别 28.7.2创建项目 28.7.3添加DllEntryPoint和导出COM函数 28.7.4添加类库 28.7.5添加ATL头文件 28.7.6添加继承来的OLE接口 28.7.7添加对QueryInterface的支持 28.7.8添加消息映射 28.7.9添加属性 28.7.10添加事件 28.7.11添加注册表的支持 28.7.12控件的初始化 28.7.13添加自定义方法 28.7.14添加.RC文件 28.7.15添加.RGS文件 28.7.16建立ActiveX控件 28.8调试ActiveX控件 28.8.1使用TD32调试OCX 28.8.2使用C ++ Builder的集成调试器调试OCX 28.8.3将C ++ Builder 3配置为即时调试器 28.9小结 第7部分图形 第29章VCL的图形类 29.1Windows的GDI和VCL的TCanvas 29.1.1什么是GDI 29.1.2VCL能使你的图形编程更简单 29.2使用TCanvas 29.3使用画刷(Brushes) 29.3.1TBrush::Color属性 29.3.2TBrush::Style属性 29.3.3TBrush::Assign方法 29.4使用画笔(Pens) 29.4.1TPen::Style属性 29.4.2TPen::Width属性 29.4.3TPen::Mode属性 29.5使用字型(Fonts) 29.5.1TFont::Height属性 29.5.2TFont::Size属性 29.5.3TFont::Name属性 29.5.4TFont::Style属性 29.5.5旋转字型 29.6TCanvas::PenPos属性 29.7TCanvas::ClipRect属性 29.8TCanvas::CopyMode属性 29.9使用TCanvas::Pixels 29.10掌握TCanvas方法 29.11BRUSHMAIN例程源码 29.11.1OnCreate事件 29.11.2FormShow方法 29.11.3设置Pen的模式(Mode) 29.11.4使用字型(Fonts) 29.11.5在Canvas上绘制图形 29.11.6使用CopyModes 29.11.7改变ClipRect 29.12使用其他形式的线形 29.13小结 第30章颜色、调色板和图像 30.1深入了解TColor 30.1.1颜色样本方案 30.1.2OnChange事件处理程序 30.2调色板 30.3再论Windows的图像文件格式 30.3.1使用位图和DB 30.3.2使用图标 30.3.3使用元文件 30.4使用TImage和TPaintBox 30.5关于位图的补充说明 30.5.1旋转位图 30.5.2动态显示 30.5.3淡入淡出 30.6小结 第31章在C++Builder中使用DirectDraw 31.1何谓DirectDraw 31.2设置DirectDraw 31.2.1DirectDrawCreate 31.2.2SetCooperativelLevel 31.2.3SetDisplayMode 31.2.4独占模式与Windowed模式 31.2.5关于DirectDraw2的问题 31.3DirectDrawSurface接口 31.3.1Lock函数 31.3.2IDirectDrawSurface2或IDirectDrawSurface3的问题 31.4在DirectDraw中使用GDI 31.4.1使用TBitmap 31.5IDirectDrawPalette接口 31.5.1创建一个自定义调色板 31.6使用DirectDraw 31.6.1动画制作 31.7多表面和翻页技术 31.7.1在背景上制作动画 31.8创建DirectDraw组件 31.9小结 第32章在C ++Builder中使用Direct 3D 32.1什么是Direct 3D 32.2初始化Direct 3D应用程序 32.2.1创建Direct 3DRM对象 32.2.2DirectDrawClipper 32.2.3Direct 3D着色选项 32.2.4HandleActivate和HandlePaint 32.3设置一个Direct 3D场景 32.3.1Direct 3DRMFrame 32.3.2光源 32.3.3摄影机 32.4用IMeshBuilder创建模型 32.4.1在磁盘上保存模型 32.4.2复杂的网格 32.4.3变换模型 32.4.4从磁盘调入网格对象 32.5纹理贴图 32.5.1包装一个模型 32.6一个三维型和纹理浏览 32.7小结 第8部分高级话题 第33章使用Delphi文件 33.1如何使用Delphi代码 33.2在C++ Builder中使用Delphi代码 33.3在C++ Builder 3中使用Delphi组件 33.4关于Pascal编译器 33.4.1什么时候可以使用is 33.4.2Real数据类型 33.4.3继承Pascal对象模型 33.4.4空集 33.4.5Pascal和C++类型 33.5头文件生成 33.5.1多重构造函数 33.5.2数组属性 33.5.3变体记录 33.6链接错误 33.6.1Pascal类中的方法 33.6.2Delphi中的句柄与C++ Builder 3中的句柄比较 33.6.3字节与字对齐问题 33.7项目示例:Monster Hunt 33.7.1创建主窗体 33.7.2关于Monster Hunt 33.7.3游戏 33.8Delphi和C++ Builder的结合 33.9小结 第34章OWL和Microsoft DLL的互用性 34.1不能使用Microsoft Visual C++ 6的DLL情况 34.1.1不要导出C++函数 34.1.2不能导出类 34.1.3不要发送脱离DLL的C++异常 34.1.4不要在一端动态分配内存,而在另一端又将其释放掉 34.1.5不要将RTL文件句柄传递给DLL 34.2从Microsoft DLL中导入函数 34.2.1为VC++的DLL创建一个工作文件.DEF 34.2.2为VC++DLL创建一个实际的导入库 34.3创建DLL的结束语 34.4OWL支持 34.4.1idetobpr:IDE转换成项目文件的工具 34.4.2OWL动态设置 34.4.3OWL、ClassLib和OCF库 34.4.4简单的C++ Builder 5的OWL应用程序转变烦恼C++ Builder 3应用程序 34.5支持MFC 34.6标准C++库 34.7 如何处置以前的C++ Builder应用程序 34.8混合使用OWL和VCL 34.8.1OWL/VCL模板类 34.8.2含有VCL窗体的OWL MDI应用程序 34.8.3作为客户应用程序的OWL对话框 34.9小结 第35章动态/静态链接库和第三方问题 35.1库链接和DLL加载概述 35.2理解DLL库 35.3创建DLL库 35.4创建一个加载静态库的可执行程序 35.5一个加载动态DLL的可执行演示程序 35.6第三方DLL问题 35.7名字分解 35.8调用的约定 35.8.1解决调用约定问题 35.9使用别名 35.10静态库 35.11第三方静态库 35.12小结 |