| 作者 |
| Charlie Calvert |
| 丛书名 |
| 软件开发技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111072164 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书完整而全面地介绍了Delphi 4。其主要内容有COM和分布式计算、数据库编程、常规编程问题以及图形和DirectX 编程。通过本书的学习,读者不仅可以快速了解Delphi 4编程的要旨,还可以掌握许多新技术,如创建COM自动化服务器和客户程序、使用MIDAS进行多层数据库计算、使用DCOM跨网络分布数据库等。 本书最大的特点是代码丰富,不仅书中详细介绍了代码样例,配套光盘上还包括了许多书中没有介绍的源程序。本书适用于使用Delphi 4 编程的程序员。 |
| 目录 |
| 目 录 译者序 第一部分 入门 第1章 程序设计基础 1 1.1 本书的结构 2 1.2 范例程序 4 1.3 创建设计良好的程序 4 1.3.1 设计问题:书写简单的代码 4 1.3.2 螺旋式上升 5 1.3.3 好OOP与差OOP的对比 5 1.3.4 注意灵活的事件处理程序 6 1.3.5 感到懒于理清程序的环节 7 1.3.6 避免使用隐藏数据交叉链接 对象 8 1.3.7 简短的方法 9 1.3.8 变量、方法以及过程的命名 10 1.3.9 避免特征漂移 10 1.3.10 创建组件 10 1.3.11 使用第三方工具 11 1.4 本书正文的注意事项 12 1.4.1 Unleash和Merc40包 12 1.4.2 CodeBox单元 13 1.4.3 建立网络 13 1.4.4 Borland/Inprise的名称变化 13 1.4.5 注释代码 14 1.5 总结 14 第2章 IDE和VCL增强 15 2.1 可停放的工具栏 15 2.2 使用工具窗口 16 2.3 使用Code Explorer 18 2.4 Delphi 4中的新工具 21 2.4.1 使用Project Manager和调试器 21 2.4.2 调试DLL 22 2.4.3 使用模块视图 23 2.4.4 使用事件日志窗口 23 2.4.5 CPU视图 24 2.4.5 调试器中的新特征 25 2.4.6 Code Browser和Tooltip Symbol Insight 26 2.5 停靠窗口 26 2.5.1 在窗体中停放控件 27 2.5.2 在窗体中停放窗体 28 2.6 动作列表 31 2.6.1 使用动作列表 31 2.6.2 使用标准动作 35 2.7 函数重载 35 2.7.1 方法重载和继承 38 2.7.2 使用方法重载时要避免的错误 40 2.7.3 默认参数 42 2.8 动态数组 43 2.9 implements关键字 46 2.10 总结 48 第3章 多态性 49 3.1 多态性的概念 49 3.1.1 赋值和等于的比较 49 3.1.2 多态性的简单例子 50 3.2 多态性赋值能力 51 3.2.1 设置子对象适合于它们的父 对象 51 3.2.2 多态性的另一面 52 3.3 虚方法和多态性 53 3.3.1 经典的形状演示 56 3.3.2 没有多态性的代码 62 3.4 VCL中的多态性 63 3.5 总结 65 第4章 异常处理 66 4.1 本章如何处理异常 67 4.2 异常的理论 67 4.2.1 异常的功能 67 4.2.2 默认异常处理程序 68 4.2.3 整个程序是一个大try块 69 4.2.4 未处理异常引起的恐慌 69 4.3 异常类 70 4.4 基本异常句法 71 4.4.1 一个简单的try..except模块 74 4.4.2 异常的关联错误字符串 75 4.4.3 找到错误的地址 76 4.4.4 异常处理总结 77 4.5 引发异常 77 4.5.1 引发VCL异常类 79 4.5.2 理解VCL异常类 81 4.5.3 运行Gauntlet:多异常类 82 4.5.4 在常规except语句中捕获异常 83 4.6 创建和引发自己的异常 83 4.7 再引发异常 87 4.8 try..finally块 88 4.9 流、异常和空闲空间 91 4.10 替换默认的异常处理程序 95 4.11 使用资源跟踪错误字符串 97 4.12 总结 101 第5章 线程 102 5.1 进程和内存 103 5.1.1 线程与多任务 104 5.1.2 抢占式与非抢占式多任务 106 5.2 线程:一个简单的例子 106 5.3 多线程程序 111 5.3.1 在Thread2程序中使用线程 115 5.3.2 向线程函数传递一个参数 115 5.3.3 临界区:让多个线程同时工作 117 5.4 处理互斥元 122 5.5 线程和VCL 126 5.6 线程安全数据库访问 127 5.7 VCL线程安全对象 128 5.8 使用TThread对象 128 5.9 设置线程的优先级 137 5.10 重访Delphi线程 142 5.11 总结 143 第二部分 创建组件 第6章 创建组件(一) 145 6.1 组件原理 146 6.2 创建现存组件的派生组件 146 6.2.1 创建简单的组件 146 6.2.2 双向工具 150 6.2.3 注册组件 151 6.2.4 改变组件的默认行为 151 6.2.5 动态创建并检查组件 152 6.3 包:将组件放入Component Palette 中 153 6.3.1 什么是包 153 6.3.2 创建包 154 6.4 扩展Unleash单元 156 6.4.1 TCCBigEdit 和TCCEmptyPanel 控件 166 6.4.2 创建复合组件 166 6.4.3 创建组件的published属性 169 6.4.4 流属性的注意事项 170 6.5 创建真正有用的组件 171 6.6 总结 175 第7章 创建组件:(二) 177 7.1 从头开始建立组件 178 7.2 时钟组件 180 7.2.1 了解TCCClock 189 7.2.2 TCCColorClock 191 7.2.3 创建Fancy Clock 192 7.3 为组件创建图标 195 7.4 Tools API :Property Editor和 Component Editor 196 7.4.1 五个主要的Tools API 196 7.4.2 Property Editor 196 7.4.3 关于注册你自己的组件以及 Component Editor的更多知识 199 7.4 Component Editor 200 7.5 不可视的组件 201 7.6 FindAllW 程序 202 7.6.1 使用TFileIterator遍历 213 7.6.2 什么时候应该把对象做成不可见 组件 215 7.6.3 AllDirs单元和FileIter单元 216 7.6.4 遍历 216 7.6.5 使用FindFirst、FindNext和 FindClose 217 7.6.6 创建事件处理程序 218 7.7 CompDirs程序 220 7.8 TCCPickDirDlg 226 7.9 组件模板 231 7.10 ActiveX控件 232 7.11 总结 235 第三部分 数据库编程 第8章 字段和数据库工具 237 8.1 从关系数据库开始 238 8.1.1 关系数据库模型的优势 239 8.1.2 简单的逻辑设置:关系数据库的 基础 239 8.1.3 DBD和Database Explorer中的索引 和关键字 240 8.2 重点规则:给每个表建立一个关键字 243 8.2.1 一对多的关系:数据和索引 244 8.2.2 用主关键字和主索引工作 245 8.2.3 用副索引和外部关键字工作 246 8.2.4 关键字的重要性 246 8.3 用数据库工具浏览和操作数据库 247 8.3.1 浏览DBDEMOS数据库的关键字 和索引 247 8.3.2 用Database Desktop创建索引 250 8.3.3 创建别名 250 8.3.4 使用Database Desktop创建主关键字 和外部关键字 251 8.3.5 探究引用完整性 252 8.3.6 关系数据库和联结 253 8.3.7 联结和QBE 254 8.4 Fields Editor 255 8.5 计算字段 259 8.6 运行期间的TDBGrid 260 8.6.1 在运行中控制DBGrid的Options 属性 263 8.6.2 运行时显示DBGrid选项 264 8.7 使用TDBGrid列 265 8.7.1 改变TDBGird对象的标题 265 8.7.2 改变网格里的整列 266 8.7.3 改变网格里一行的颜色 267 8.7.4 改变列宽 268 8.7.5 在TDBGrid里隐藏列 268 8.7.6 显示可见字段的列表 269 8.7.7 运行时移动列 270 8.8 查找字段 270 8.9 多记录对象 276 8.10 总结 276 第9章 平面文件现实世界数据库 278 9.1 本章示例程序 279 9.2 设计应用程序 279 9.2.1 定义数据 280 9.2.2 程序设计的焦点 282 9.3 定义程序的外观 284 9.4 查找:处理Category字段 286 9.5 设置程序的命令结构 287 9.6 查看应用程序的“粗略草稿” 289 9.7 创建自己的对象 290 9.8 创建最终的程序 291 9.9 切换进和切换出只读模式 309 9.10 排序数据 311 9.11 查询数据 313 9.12 筛选数据 314 9.13 标记文件 315 9.14 设置颜色 317 9.15 使用注册表 320 9.16 剪贴板:剪切、复制和粘贴 323 9.17 总结 323 第10章 关系式数据库 324 10.1 现实世界的数据 324 10.2 测试关联地址程序 325 10.3 kdAdd代码 328 10.3.1 使用kdAdd程序 338 10.3.2 为kdAdd建立索引 338 10.3.3 查询记录 339 10.3.4 插入数据和取消操作 340 10.3.5 删除数据:程序的数据模块 初览 341 10.3.6 数据模块:级联删除 343 10.3.7 数据模块:总体登记 345 10.3.8 在字符串资源中加入错误字符串 345 10.3.9 About框 346 10.4 使用kdAddExplore程序 346 10.4.1 使用TSession 347 10.4.2 kdAddExplore程序的代码 349 10.4.3 用TTreeView显示系统数据库 355 10.4.4 展开TTreeView节点 356 10.4.5 为TTreeView加入可用表的 列表 356 10.4.6 找到索引和字段 358 10.4.7 显示别名和别名参数 359 10.5 总结 360 第11章 使用本地InterBase服务器 361 11.1 从InterBase开始 361 11.1.1 数据库和工作市场 362 11.1.2 设置本地InterBase 362 11.1.3 设置InterBase别名 365 11.2 创建数据库 366 11.2.1 使用WISQL 367 11.2.2 创建表 367 11.3 利用WISQL管理数据库 368 11.4 事务处理 370 11.4.1 创建TRANSACT程序 370 11.4.2 使用TRANSACT程序 371 11.4.3 理解事务处理 372 11.5 高速缓存更新 373 11.6 多对多关系 378 11.7 安全和InterBase Server Manager 387 11.7.1 定义表的访问权力 388 11.7.2 利用InterBase Server Manager 备份表 388 11.8 总结 389 第12章 InterBase编程 390 12.1 关于Music 程序 391 12.2 设计Music 程序 392 12.2.1 创建数据库方案 393 12.2.2 修改表:空或非空 393 12.2.3 重新命名现有表中的字段 394 12.2.4 创建Blob字段 395 12.2.5 主关键字和外部关键字 396 12.3 在Music 表创建索引 398 12.4 生成器、触发器和存储过程 399 12.4.1 不要在活动索引上使用触发器 400 12.4.2 使用存储过程 401 12.4.3 来自Delphi端的存储过程 402 12.5 服务器端规则和客户端规则 403 12.6 Music 程序界面概述 404 12.7 使用子窗体 405 12.8 Music 程序的代码 408 12.8.1 使用Music 程序 408 12.8.2 禁止密码:TdataBase对象 408 12.8.3 FormCreate事件 408 12.9 使用Music程序中的数据 411 12.10 向数据库提出一个问题:简短的 SQL入门 412 12.10.1 不返回数据集合的存储过程 416 12.10.2 查看数据范围 417 12.11 总结 418 第四部分 COM 第13章 COM接口和基础 419 13.1 理解COM接口 419 13.1.1 COM是什么? 420 13.1.2 COM和窗口 420 13.1.3 即插即用应用程序 420 13.1.4 COM的问题 421 13.1.5 UNIX上的COM 422 13.1.6 COM+和COM的未来 423 13.2 接口介绍 423 13.2.1 新接口类型 423 13.2.2 接口不是类 424 13.2.3 不能直接实现接口 424 13.2.4 利用类实现接口 425 13.2.5 调用接口的方法 428 13.2.6 破坏接口 429 13.3 接口背后的理论 432 13.3.1 使用接口的原因 433 13.3.2 维护或更新接口 435 13.4 创建和使用COM接口 435 13.4.1 理解GUID 436 13.4.2 关于注册表和GUID所有内容 437 13.4.3 理解IUnknown 440 13.4.4 实现IUnknown 445 13.4.5 为接口指定GUID 447 13.4.6 幻数 448 13.4.7 UnknownByUser程序的注释 449 13.5 高级接口问题 450 13.5.1 多个接口 451 13.5.2 方法解析语句 454 13.5.3 Implements伪指令 455 13.5.4 虚方法表 458 13.6 总结 458 第14章 TComObject、TTypedComObject 以及类型库 460 14.1 样例程序 460 14.2 TComObject 460 14.2.1 在DLL中放置普通接口 461 14.2.2 IClassFactory 469 14.2.3 ISystemInfo接口 470 14.2.4 注册DLL 470 14.2.5 从可执行文件访问存储在DLL 中的COM对象 471 14.2.6 越过程序边界编组数据 472 14.2.7 编组数据 473 14.2.8 Variant数组 473 14.2.9 调用ISystemInfo数据 479 14.3 类型库和查询对象 482 14.3.1 创建类型库 483 14.3.2 创建查询类型库的客户程序 488 14.3.3 检索ITypeInfo 491 14.3.4 获取接口信息 494 14.4 总结 495 第15章 创建COM自动化服务器和 客户程序 496 15.1 理解OLE自动化客户程序和 服务器 496 15.2 建立简单的COM服务器和客户 程序 497 15.2.1 建造简单的服务器 497 15.2.2 在服务器上添加方法 498 15.2.3 查看生成的源代码 499 15.2.4 添加接口属性 500 15.2.5 建立简单客户程序 500 15.2.6 通过TCOMInterface来调用 方法 504 15.2.7 通过dispinterface调用方法 505 15.2.8 通过Variant调用方法 506 15.3 IDispatch、双重接口和 dispinterface 507 15.3.1 从Word调用SimpleAutoServer 508 15.3.2 VTable和双重接口 509 15.4 类型库 510 15.4.1 什么是类型库 511 15.4.2 创建类型库 511 15.4.2 有效的自动化类型 512 15.5 用EmptyParam忽略参数 512 15.6 注册 513 15.7 自动编组数据 515 15.8 从一个CoClass得到两个或更多 的接口 515 15.9 总结 526 第16章 用Delphi完成Word 和Excel 自动化 527 16.1 自动化Office应用程序的系统要求 527 16.2 启动Delphi和Excel 528 16.2.1 启动Excel 528 16.2.2 使用COMObj 529 16.2.3 了解Excel的简单自动化 530 16.2.4 比较接口和Variant 530 16.2.5 理解CreateOleObject 531 16.2.6 Variant和类型 532 16.2.7 创建Excel自动对象 532 16.3 了解Excel 自动化对象 533 16.3.1 在Application对象内访问各种 对象 534 16.3.2 使用自动化 535 16.4 在Excel和Word间共享图表 543 16.4.1 创建电子表格 546 16.4.2 创建图表 547 16.4.3 使用SeriesCollection对象 548 16.5 从Excel向Word复制数据 550 16.5.1 Word内部的自动化 551 16.5.2 发送文档 553 16.6 总结 553 第五部分 Internet 编程 第17章 接口和Internet Explorer 555 17.1 Variant与接口的对比 555 17.1.1 补救接口 556 17.1.2 使用类型库 557 17.2 本章所需文件 557 17.3 使用Word和Excel 558 17.3.1 使用Excel 和Word接口 565 17.3.2 比较Variant和接口技术 566 17.4 使用IE和TwebBrowser 568 17.4.1 开始:访问Web Page中的 元素 568 17.4.2 运行时在浏览器上处理 HTML 574 17.5 在浏览器内放置ActiveX控件 581 17.6 总结 588 第18章 WebBroker:CGI和ISAPI 589 18.1 Web Module 589 18.2 Web Server Application Wizard 589 18.2.1 CGI 590 18.2.2 WinCGI 590 18.2.3 ISAPI/NSAPI 591 18.2.4 CGI与ISAPI 591 18.3 WebBroker组件 591 18.3.1 TWebModule 592 18.3.2 TWebResponse 593 18.3.3 TWebRequest 593 18.4 IntraBob 594 18.5 TPageProducer 596 18.6 TDataSetPageProducer 598 18.7 浏览状态 601 18.7.1 Fat URL 602 18.7.2 Cookie 602 18.7.3 隐含字段 602 18.8 高级网页的生成 605 18.9 TDataSetTableProducer 610 18.10 Database Web Application Wizard 613 18.11 TQueryTableProducer 613 18.12 总结 617 第19章 WinINet和FTP 618 19.1 理解WinINet、FTP和TCP/IP 618 19.1.1 所需文件 618 19.1.2 确保FTP在系统中运行 619 19.1.3 安装TCP/IP应该注意的问题 619 19.2 FTP使用WinINet 622 19.2.1 使用InternetOpen 624 19.2.2 使用InternetConnect 624 19.2.3 获得当前 626 19.2.4 在中查找文件(一) 626 19.2.5 在中查找文件(二) 628 19.2.6 检索文件(一) 630 19.2.7 创建回调 631 19.2.8 检索文件(二) 635 19.2.9 发送文件到服务器的简单方法 637 19.2.10 删除文件 637 19.2.11 创建和删除 638 19.3 在程序中使用FTP控件 639 19.3.1 连接服务器 647 19.3.2 响应OnNewDir事件 648 19.3.3 改变 648 19.3.4 跟踪文件传送 649 19.4 总结 651 第六部分 分布式编程 第20章 DCOM 653 20.1 COM和分布式体系结构 653 20.1.1 什么是DCOM 653 20.1.2 在Windows 95/98和Windows NT 上运行DCOM服务器 654 20.1.3 作为DCOM服务器使用 Windows 98 656 20.2 简单的DCOM客户程序和服务器 656 20.2.1 建立服务器 657 20.2.2 理解Safecall 657 20.2.3 机器之间编组数据 658 20.2.4 创建DCOM客户程序 662 20.2.5 使用远程对象 670 20.3 再访问SystemInformation程序 670 20.4 轻量远程数据集 677 20.4.1 理解DataCOMServer程序 685 20.4.2 访问远程数据集的 DataCOMClient 689 20.4.3 理解 DataCOMClient 694 20.4.4 编辑数据行 696 20.5 程序数据和自动化数据 697 20.6 测试远程调试系统 702 20.7 总结 703 第21章 MIDAS 704 21.1 多层计算概述 704 21.1.1 什么是MIDAS 705 21.1.2 分布式计算的目的 706 21.1.3 公文包模型概述 706 21.1.4 术语 707 21.1.5 查找调度程序 707 21.2 技术细节:使用分布式数据集 708 21.2.1 建立简单的MIDAS应用程序 709 21.2.2 创建 SimpleMidasServer 714 21.2.3 理解服务器 715 21.2.4 导出TProvider接口 715 21.2.5 为客户应用程序准备服务器 716 21.2.6 创建简单的MIDAS客户程序 717 21.2.7 理解简单的MIDAS客户程序 718 21.2.8 远程访问服务器 718 21.2.9 使用套接字代替DCOM 719 21.3 建立一对多应用程序 720 21.4 建立远程数据客户应用程序 722 21.4.1 更新和刷新数据 725 21.4.2 公文包模型 726 21.4.3 PacketRecords 727 21.5 错误处理 728 21.6 服务器端逻辑与客户端逻辑 729 21.7 所需的DLL 731 21.8 使用OLEnterprise 732 21.9 总结 733 第22章 ActiveForm 735 22.1 介绍ActiveForm 735 22.2 建立ActiveForm 736 22.3 配置在Internet Explorer里使用的 ActiveForm 736 22.3.1 为ActiveForm设置选项 736 22.3.2 连接到ActiveForm上 737 22.3.3 了解OCCACHE 738 22.4 使用CAB文件和包 739 22.4.1 理解INF文件 741 22.4.2 许可证问题 742 22.5 在Word中运行ActiveForm 742 22.5.1 注册应用程序 742 22.5.2 在Microsoft Word里运行窗体 743 22.6 使用ActiveForm模板 745 22.7 套接字和ActiveForm 745 22.7.1 套接字概述 745 22.7.2 建立套接字支持的 MIDAS ActiveForm 746 22.7.3 创建基于MIDAS的ActiveForm 747 22.8 总结 749 第23章 MTS 750 23.1 什么是MTS 750 23.2 如何安装MTS 752 23.3 创建简单的MTS服务器 752 23.4 创建简单的MTS客户程序 758 23.5 调用本地对象 760 23.6 用MTS注册对象 761 23.7 远程调用对象 761 23.8 创建简单的MTS数据库服务器 763 23.9 创建简单的MTS数据库客户程序 770 23.10 处理MTS事务 774 23.11 建立跨越多个服务器的MTS示例 784 23.12 Rocket程序的代码 786 23.13 总结 799 第24章 CORBA 800 24.1 理解CORBA 800 24.1.1 什么是CORBA 800 24.1.2 比较DCOM和CORBA 801 24.1.3 什么是ORB 802 24.1.4 什么是Smart Agent 803 24.1.5 什么是BOA 804 24.1.6 什么是代理、存根和框架 805 24.1.7 理解Delphi和CORBA 807 24.2 两个重要的CORBA存储库 808 24.2.1 什么是Interface Repository 808 24.2.2 什么是Implementation Repository 809 24.3 简单的CORBA对象 809 24.3.1 服务器 810 24.3.2 客户程序 817 24.3.3 理解客户程序 819 24.3.4 理解CORBA存根 822 24.3.5 理解CORBA框架 822 24.4 理解服务器的IDL接口 823 24.5 简单的CORBA动态项目 824 24.6 简单的CORBA数据库对象 831 24.6.1 创建CORBA数据库服务器 831 24.6.2 创建客户程序 840 24.7 利用VisiBroker Manager和OSFind 842 24.8 总结 843 第25章 Delphi、Java和C++ 844 25.1 在Delphi 和Java中使用CORBA 844 25.2 从Delphi调用Java服务器 851 25.3 从C++Builder调用Delphi CORBA 服务器 856 25.3.1 用C++建立CORBA服务器并从 Delphi调用 866 25.3.2 理解BCBCorbaserver 871 25.4 总结 873 第七部分 游戏编程 第26章 VCL图形类 875 26.1 Windows GDI与VCL TCanvas 876 26.1.1 理解GDI 876 26.1.2 VCL使图形编程更容易 877 26.2 使用TCanvas 877 26.3 研究与使用画刷 878 26.3.1 TBrush.Color属性分析 878 26.3.2 TBrush.Style属性分析 878 26.3.3 TBrush.Assign方法分析 880 26.4 研究与使用画笔 881 26.4.1 TPen.Style属性分析 881 26.4.2 TPen.Width属性分析 881 26.4.3 TPen.Mode属性分析 881 26.5 研究与使用字体 883 26.5.1 TFont.Height属性分析 883 26.5.2 TFont.Size属性分析 883 26.5.3 TFont.Name属性分析. 884 26.5.4 TFont.Style属性分析 884 26.6 研究与使用TCanvas.PenPos 884 26.7 研究与使用TCanvas.ClipRect 884 26.8 研究与使用TCanvas.CopyMode 885 26.9 研究与使用TCanvas.Pixels 886 26.10 分析与理解TCanvas方法 886 26.11 MainBrush范例代码 886 26.11.1 OnCreate事件 895 26.11.2 FormShow方法 896 26.11.3 设置画笔模式 897 26.11.4 使用Fonts 898 26.11.5 在画布上画出形状 899 26.11.6 使用CopyMode 902 26.11.7 修改ClipRect 902 26.12 其他名称的线条 903 26.13 深入研究VCL 906 26.13.1 深入了解TColor 906 26.13.2 Colors样本项目 907 26.13.3 Onchange事件处理程序 909 26.14 调色板 910 26.15 深入了解Windows的图形文件 格式 910 26.15.1 分析位图和DIB 910 26.15.2 分析图标 911 26.15.3 分析元文件 912 26.16 分析TPaintBox和TImage 915 26.17 再谈位图 916 26.18 总结 923 第27章 DirectDraw 924 27.1 理解DirectDraw 924 27.1.1 什么是DirectDraw 925 27.1.2 关于双缓冲的几点想法 926 27.1.3 硬件与仿真 927 27.2 一个简单的DirectDraw程序 928 27.3 释放接口 934 27.3.1 进入独占模式和改变屏幕 分辨率 935 27.3.2 DirectDraw表面是什么 935 27.3.3 向屏幕写文本 937 27.3.4 交换表面 938 27.3.5 释放内存 939 27.4 平滑动画 940 27.5 使用位图 949 27.6 游戏资源 955 27.7 总结 956 第28章 更多的DirectX技术 957 28.1 DirectSound 957 28.1.1 初始化DirectSound 958 28.1.2 枚举声音驱动程序 961 28.1.3 使用DirectSoundBuffer 962 28.1.4 打开WAV文件 964 28.1.5 播放声音文件 966 28.1.6 播放大文件 967 28.1.7 一次播放两个WAV文件 967 28.2 创建DirectX游戏 968 28.2.1 创建DelphiMan程序 970 28.2.2 实现DelphiMan程序的注意 事项 979 28.2.3 “机器人物”的控制 982 28.2.4 小结DelphiMan程序 982 28.3 浏览Direct3D 982 28.4 关键的3D技术 983 28.5 总结 984 配套光盘内容 986 |