出版时间:2004-9 出版社:人民邮电出版社 作者:(美)哈里森 页数:521 字数:824000 译者:周良忠
Tag标签:无
内容概要
本书介绍了用Symbian OS C++进行手机开发的各方面知识。 全书共分4部分,每一部分的第1章描述一个教学示例程序,其后各章根据这个例子提出的问题展开讨论。 第1部分(第1~3章)简单介绍了Symbian OS。第2部分(第4~8章)解释了创建简单GUI(图形用户界面)应用程序所需的基本类、资源、API和编程约定。第3部分(第9~15章)介绍了编写重要独立应用程序的相关知识。第4部分(第16~20章)介绍了系统编程、通信和事件处理的相关知识。附录部分给出了示例项目、开发资源,以及和仿真器相关的有用信息。 本书适用于所有Symbian OS手机开发人员以及相关的管理人员。
作者简介
Richard在 Symbian的主要工作是系统集成以及建立和领导SI小组。他在若干年的数学、物理和计算机科学教学后,于1983年加入PSION。在这段时间,他为ACORN COMPUTERS编写了FORTH语言实现,并为ACORN ATOM和BBC MICRO编写了产品用户手册。
他毕业于牛津BALLIOL大学,获
书籍目录
第1章 起步 11.1 使用仿真器 11.1.1 启动仿真器 11.1.2 GUI样式 21.2 文本版本的Hello World 41.2.1 程序hellotext 41.2.2 项目定义文件 71.2.3 组件定义文件 81.2.4 从命令行生成 81.2.5 在Metrowerks IDE中生成 101.2.6 在目标机器上运行 101.3 小结 12第2章 系统结构 132.1 硬件资源 132.2 软件基础知识 152.3 进程、线程和上下文切换 162.4 可执行程序 172.4.1 执行的位置 182.4.2 载入和共享 182.4.3 缩减大小 182.4.4 启动应用程序和服务器 192.5 电源管理 192.6 内核和E32 202.7 设备驱动程序 212.8 定时器 212.9 内存 222.9.1 进程和线程内存 232.9.2 在DLL中无可写静态数据 242.10 文件 252.11 事件处理 262.12 剖析事件处理 262.13 活动对象 272.14 多任务处理和抢占 282.15 服务器 292.16 线程产生作用的地方 302.17 本书涉及的API 312.18 小结 33第3章 C++和面向对象 343.1 基本类型 343.2 命名约定 353.2.1 类名 363.2.2 数据名 363.2.3 函数名 373.2.4 宏名 373.2.5 版式 383.2.6 小结 383.3 函数 383.3.1 函数参数 393.4 API 393.4.1 函数类型 403.4.2 DLL和其他API元素 403.4.3 导出的函数 413.4.4 虚函数和API 413.5 模板 423.5.1 瘦模板 423.5.2 模板中的数字 433.6 类型转换 433.7 类 433.7.1 接口 443.7.2 不良做法 453.8 设计模式 453.9 类图和UML 463.9.1 描述API 463.9.2 描述类 473.9.3 描述类之间的关系 473.9.4 描述派生关系 483.9.5 基数 493.10 小结 49第4章 简单图形应用程序 504.1 名字变更的意义 504.2 图形架构简介 504.3 应用程序结构 514.4 图形化的“Hello World!”程序 534.4.1 程序 534.4.2 项目规范文件 534.4.3 获得UID 544.4.4 生成应用程序 554.4.5 在CodeWarrior IDE中生成 564.4.6 源代码 564.5 资源文件 634.5.1 头 644.5.2 定义快捷键和菜单 644.5.3 字符串资源 664.6 实际应用 674.7 启动应用程序 674.8 命令和事件处理 684.8.1 从菜单栏中由指针生成的命令 684.8.2 菜单栏中的键盘生成命令 694.8.3 快捷键中的命令 694.9 终止应用程序 704.10 目标式调试 704.11 设置MetroTRK 704.11.1 配置 714.12 启动MetroTRK 714.13 设置CodeWarrior ID 714.14 调试应用程序 724.15 小结 72第5章 字符串和描述符 735.1 字符串与内存 745.1.1 C中的字符串 745.1.2 Symbian OS中的字符串 745.2 修改字符串 775.2.1 修改C字符串 775.2.2 修改Symbian OS的字符串 785.2.3 修改HBufC 785.2.4 描述符类型小结 805.2.5 在接口中使用抽象类 815.2.6 再论文字 815.3 标准描述符函数 825.3.1 基本函数 835.3.2 比较 835.3.3 搜索 835.3.4 提取 835.3.5 清除和设置 845.3.6 操作数据 845.3.7 字母操作 845.3.8 修剪和对齐 845.3.9 格式化 845.4 更多的文本API 845.5 Unicode和字符转换 855.6 二进制数据 865.7 小结 88第6章 错误处理和清理 896.1 错误类型 896.2 处理内存不足的错误 916.2.1 Uikon 调试键 916.2.2 Memorymagic应用程序 926.2.3 分配、销毁和堆平衡 936.2.4 堆失败 976.2.5 异常退出的工作方式 986.2.6 清理栈 1016.2.7 两阶段构造 1046.3 清理规则小结 1086.4 C类和T类 1096.5 R类 1106.5.1 作为成员变量的R类 1116.5.2 错误码返回与L函数 1126.5.3 清理栈上的R类 1126.6 用户错误 1136.7 严重提示的更多知识 1146.8 测试引擎和库 1156.9 小结 116第7章 资源文件 1187.1 为什么需要针对Symbian的资源编译器 1187.1.1 资源文件语法 1187.1.2 可本地化字符串 1207.1.3 多资源文件 1227.1.4 编译资源文件 1227.1.5 已编译资源文件的内容 1247.2 小结 127第8章 基本API 1288.1 几个优秀的API 1288.1.1 User类 1288.1.2 动态缓冲 1298.1.3 集合 1328.1.4 区域设置 1358.1.5 数学 1368.1.6 变量参数表 1368.1.7 字符串格式化 1378.1.8 RDebug类 1378.2 C标准库 1388.2.1 移植问题 1388.2.2 移植多线程程序 1408.2.3 全局数据 1418.2.4 结论 1438.3 小结 144第9章 独立应用程序 1459.1 战舰游戏 1459.2 综述 1469.2.1 程序结构 1469.2.2 引擎 1479.2.3 控制器 1479.3 引擎类 1489.3.1 舰船类 1499.3.2 舰队类 1509.3.3 游戏引擎类 1549.4 视图类 1559.4.1 构建视图 1569.4.2 绘制视图 1569.4.3 处理事件 1619.5 换算和缩放 1629.6 控制器 1669.6.1 访问GUI环境 1679.6.2 缩放 1679.7 应用程序UI 1699.8 持久性存储 1719.8.1 作为基于文件的应用程序的Solo Ships 1729.8.2 存储和还原 1729.8.3 创建默认文档 1759.8.4 应用程序UI和文档 1769.9 双人战舰游戏 1769.9.1 视图架构 1769.9.2 双人战舰游戏视图 1789.9.3 舰队视图 1789.9.4 隐藏器视图 1829.9.5 视图测试程序 1829.9.6 声音效果 1839.10 小结 184第10章 对话框和具体控件 18610.1 对话框介绍 18610.1.1 查询对话框 18610.1.2 单页对话框 18710.1.3 多页对话框 18810.1.4 提示文本 18810.1.5 控件 18910.1.6 对话框处理 18910.1.7 模态 19010.1.8 小结 19010.2 一些简单对话框 19010.2.1 资源文件定义 19210.2.2 对话框代码 19310.2.3 只读对话框 19610.2.4 简单对话框处理 19710.3 对话框API 20010.3.1 资源规范 20010.3.2 添加按钮 20010.3.3 基本函数 20110.4 对话框常用控件 20310.4.1 按钮 20410.4.2 列表 20510.4.3 编辑器 20510.4.4 在对话框中使用控件 20610.4.5 访问控件 20610.4.6 对话框中的自定义控件 20710.5 标准对话框 20810.5.1 警报 20810.5.2 查询 20810.5.3 其他标准对话框 20910.6 小结 209第11章 图形显示 21011.1 绘图基础 21011.1.1 控件 21111.1.2 Draw()概览 21111.2 CGraphicsContext API 21311.2.1 坐标类 21411.2.2 设置图形上下文 21511.2.3 绘图函数 21611.3 绘图和重绘 21811.3.1 模型、视图和控制器模式 21911.3.2 Draw()契约 22011.4 无闪烁重绘 22211.4.1 绘制一切 22311.4.2 状态视图更新 22411.4.3 命中报告 22511.4.4 光标移动 22611.5 屏幕共享 22711.5.1 CONE 22711.5.2 自主窗口和寄宿控件 22811.5.3 复合控件 23111.5.4 绘图的更多知识 23211.6 CCoeControl的绘图支持 23611.6.1 控件环境 23711.6.2 自主窗口和寄宿 23811.6.3 组件 23911.6.4 位置与大小 23911.6.5 绘图 24011.7 特殊效果 24111.7.1 阴影 24211.7.2 后台备份 24211.7.3 动画 24211.7.4 Uikon调试键 24311.7.5 控件上下文 24411.7.6 滚动 24411.8 小结 244第12章 交互图形 24612.1 键、指针和命令基础知识 24612.1.1 处理键事件 24712.1.2 处理指针事件 24812.1.3 将事件转换成命令 25012.2 对话框中的交互 25112.2.1 用户需求 25112.2.2 一些基本抽象 25212.2.3 程序员需求 25312.2.4 复合控件 25312.2.5 键分布和焦点 25312.2.6 变暗和可见性 25412.2.7 验证 25512.2.8 控件观察者 25512.2.9 容器 25712.3 键处理过程回顾 25812.3.1 焦点 26012.3.2 文本光标 26112.4 指针处理回顾 26112.4.1 交互范例 26112.4.2 选取相关性 26212.4.3 抓取指针按下控件 26212.4.4 捕获指针 26212.4.5 获得高分辨率的指针事件 26312.4.6 处理指针事件 26312.4.7 自定义指针和键声音 26412.5 窗口服务器和控件环境API的更多知识 26412.5.1 应用程序与窗口服务器的通信 26412.5.2 窗口类型 26512.5.3 标准窗口 26612.5.4 窗口组 26712.6 shell 26812.7 小结 268第13章 文件、流和存储 26913.1 基于文件的应用程序 26913.1.1 用户和系统文件 27013.1.2 UIQ应用程序文件位置 27113.1.3 命名和位置约定小结 27113.2 API引论 27213.3 文件服务器 27213.3.1 文件服务器会话 27313.3.2 当前目录 27413.3.3 驱动器、文件系统和存储介质 27413.3.4 文件 27513.3.5 目录 27513.3.6 文件名解析 27613.4 streams程序 27713.4.1 与文件服务器建立连接 27813.4.2 文件写入 27913.4.3 回读 28313.4.4 文件名解析 28413.4.5 文件API小结 28513.5 流 28513.5.1 内部格式和外部格式 28513.5.2 外部化和内部化数据的途径 28613.5.3 流类型 29113.6 存储 29213.6.1 直接文件存储 29213.6.2 嵌入式存储 29413.6.3 永久性文件存储 29513.7 存储类型 29713.8 字典存储和.ini文件 29813.9 UIQ应用程序架构 29913.10 小结 300第14章 收尾工作 30214.1 添加按钮 30214.1.1 创建位图 30314.1.2 位图转换 30414.1.3 修改资源文件 30514.1.4 生成应用程序 30714.1.5 bmconv工具的补充说明 30714.2 添加应用程序图标 30814.2.1 创建图标 30914.2.2 添加标题 30914.2.3 重新生成应用程序 31014.2.4 aiftool的补充说明 31014.3 为应用程序提供安装支持 31114.3.1 安装文件的安全保护 31214.3.2 生成包文件 31314.3.3 生成最终的SIS文件 31514.3.4 SIS文件的安装 31514.3.5 SIS文件的检查和卸载 31614.3.6 应用程序的发行 31614.4 UIQ应用程序的设计原则 31714.4.1 GUI规划 31714.4.2 设计列表视图和详细视图 31814.4.3 设计菜单和文件夹 31814.4.4 标准菜单项 31914.4.5 创建对话框 31914.4.6 考虑文本输入 31914.4.7 提供文本和消息 31914.4.8 使用滚动箭头和滚动条 32014.4.9 适应各种缩放比例 32014.4.10 应用程序间的链接 32014.5 数据处理 32014.6 小结 321第15章 与设备和尺寸无关的图形 32315.1 应用中与尺寸和目标无关的绘图 32315.1.1 与设备无关的绘图 32615.1.2 使用视图 33015.1.3 管理缩放因子 33115.1.4 视图和重用 33215.1.5 设备无关绘图的小结 33415.2 深入介绍GDI 33415.2.1 位图传送和位图 33515.2.2 深入介绍字体 33715.2.3 关于打印的更多知识 33815.2.4 色彩 33915.2.5 Web浏览 34115.3 开发人员对于设备无关代码的探索 34115.4 GUI系统 34215.4.1 Symbian OS GUI系统的发展 34215.4.2 主要GUI组件 34515.5 小结 346第16章 多用户应用程序 34716.1 Symbian OS中的通信 34716.2 不带通信的Battleships 34816.2.1 视图和菜单技巧 35016.2.2 面向对象管道技术 35116.2.3 不同的通信 35216.3 TOGS 35216.3.1 TOGS的形式 35316.3.2 起点--数据报和对话 35316.3.3 GSDP:游戏会话数据报协议 35416.3.4 BSP:Battleships协议 35516.3.5 测试程序 35516.3.6 模式重用 35616.3.7 在TOGS上进行构建 35716.4 使用游戏 35716.4.1 实际玩游戏 35816.4.2 RGCP中的可靠性 35816.4.3 SMS 35916.5 原理剖析 35916.5.1 状态视图 36116.5.2 处理攻击请求 36116.5.3 检查条件 36216.5.4 攻击处理完整过程 36416.6 更深入介绍Battleships 36816.6.1 更理想的Battleships 36816.6.2 其他游戏 37016.6.3 单人游戏 37116.6.4 基础结构的改进 37116.7 小结 373第17章 活动对象 37417.1 一个简单活动对象 37417.1.1 构造和析构 37617.1.2 请求和处理事件 37717.1.3 取消请求 37817.2 工作方式 37817.2.1 取消请求的更多知识 37917.2.2 错误处理 38117.2.3 非抢占和优先级 38117.2.4 启动和终止规划器 38217.2.5 在活动规划器中添加功能 38317.2.6 框架小结 38417.3 活动对象模式 38717.3.1 维护未完成的请求 38717.3.2 状态机 39017.3.3 处理完成的接口 39217.3.4 长期运行的任务和增量接口 39317.3.5 区分优先级并维护响应灵敏度 39417.4 小结 395第18章 客户端-服务器框架 39618.1 引言 39618.1.1 处理常规请求 39718.1.2 建立会话 39818.1.3 启动服务器 39918.1.4 处理异步请求 39918.1.5 结束会话并在客户端消亡后清理 40018.1.6 在服务器消亡后清理 40018.1.7 处理一个会话中的多个对象 40018.2 性能 40118.2.1 客户端缓冲 40218.2.2 高级事务 40318.2.3 数据缓存 40318.2.4 相同进程中的相关服务器 40418.2.5 共享内存 40518.3 服务器和线程 40718.3.1 在线程间共享客户端对象 40718.3.2 服务器中的多线程 40818.3.3 时间起关键作用的服务器性能 40818.3.4 线程优先级 40918.4 客户端-服务器API 40918.4.1 线程基础 41018.4.2 线程间数据传输和数据包类 41118.4.3 客户端对象 41218.4.4 服务器端的对象 41518.5 小结 419第19章 GSDP服务器 42019.1 软件结构 42019.2 客户端接口 42119.2.1 消息传递函数 42319.2.2 监听和接收 42419.2.3 连接和断开 42619.2.4 作为DLL的客户端API 42819.3 服务器实现 42919.3.1 消息处理 43019.3.2 发送数据报 43519.3.3 使用ECOM框架 43719.3.4 使用协议 43819.3.5 接收数据报 44519.3.6 启动和关闭 45019.4 小结 456第20章 GDP实现 45720.1 任务、状态和状态机 45720.1.1 GDP状态机 45820.2 SMS实现 46220.2.1 ESOCK和SMS的Symbian OS支持 46220.2.2 GDP-SMS消息格式 46320.2.3 GDP-SMS实现 46320.3 蓝牙实现 47120.3.1 蓝牙的Symbian OS支持 47220.3.2 GDP-BT的协议映射 47220.3.3 GDP-BT实现 47220.4 小结 478附录A 示例项目 480A.1 独立项目 480A.2 Battleships项目 481A.3 TOGS项目 481附录B 开发人员资源 482B.1 Symbian开发人员网络 482B.2 Symbian OS开发人员工具 482B.2.1 AppForge 482B.2.2 Borland 482B.2.3 Forum Nokia 482B.2.4 Metrowerks 483B.2.5 Sun Microsystems 483B.2.6 Texas Instuments 483B.2.7 工具文档 483B.3 Symbian OS SDK 483B.3.1 Symbian OS v7.0 484B.3.2 Symbian OS v6.1 484B.3.3 Symbian OS v6.0 484B.3.4 Symbian OS v5 484B.4 其他SDK和SDK扩展 485B.4.1 OPL 485B.4.2 Visual Basic 485B.4.3 Intel PCA开发包 485B.4.4 Texas Instruments Innovator开发包 485B.5 开发人员支持 485B.5.1 Ericsson Mobility World 486B.5.2 Forum Nokia 486附录C TOGS指南和参考 487C.1 GDP 487C.1.1 Symbian OS的实现代码 488C.1.2 GDP网络回送实现 489C.1.3 GDP聊天 490C.1.4 继续探讨GDP 490C.2 GDSP 490C.2.1 Symbian OS客户端实现 493C.2.2 GSDP聊天 495C.2.3 继续介绍GSDP 496C.3 RGCP 496C.3.1 协议综述 496C.3.2 RGCP Symbian OS的实现 501C.3.3 RGCP交谈 504C.3.4 深入探讨RGCP 504C.4 战舰协议 504C.4.1 协议综述 505C.4.2 游戏UI 508C.4.3 程序结构 509C.4.4 继续探讨BSP 509C.5 小结 509附录D 仿真器参考 510D.1 仿真器内部 510D.1.1 源代码兼容性 511D.1.2 驱动盘映射 512D.1.3 目录体系 513D.1.4 仿真器启动 514D.1.5 仿真器启动参数 515D.1.6 仿真器命令行语法 515D.1.7 键映射 516D.1.8 通信 516D.1.9 仿真器有多好 517D.1.10 调试键 519索引 520
图书封面
图书标签Tags
无
评论、评分、阅读与下载