Symbian OS C++手机应用开发(到货)


[美] Richard Harrison 等 著 周良忠

定价:68.00元
出版日期:2004年9月中旬
              
 
内容简介:

 
 本书介绍了用Symbian OS C++进行手机开发的各方面知识。
全书共分4部分,每一部分的第一章描述一个教学示例程序,其后各章根据这个例子提出的问题展开讨论。 第1部分(第1~3章)简单介绍了Symbian OS。第2部分(第4~8章)解释了创建简单GUI(图形用户界面)应用程序所需的基本类、资源、API和编程约定。第3部分(第9~15章)介绍了编写重要独立应用程序的相关知识。第4部分(第16~20章)介绍了系统编程、通信和事件处理的相关知识。附录部分给出了示例项目、开发资源,以及和仿真器相关的有用信息。
本书适用于所有Symbian OS手机开发人员以及相关的管理人员。

随书光盘内容:
Symbian OS平台Metrowerks工具的演示版本。
UIQ软件开发包(SDK)。
编译器和文档。
源代码下载地址:http://www.symbian.com/books/scmp/support/scmpdownloads.html
 
作者简介:

Richard Harrison
  Richard在Symbian的主要工作是系统集成以及建立和领导SI小组。他在若干年的数学、物理和计算机科学教学后,于1983年加入Psion。在这段时间,他为Acorn Computers编写了Forth语言实现,并为Acorn Atom和BBC Micro编写了产品用户手册。
  他曾经为Sinclair QL和Psion的PC应用软件编写了用户软件文档。其他工作包括合作完成Organiser II电子表格,他是Psion Series 3和3a字处理软件的主要设计者和作者,也是Psion Sibo SDK团队的主要领导人。他也为Psion Organiser I编写过系统软件,为OPL的原始版本编写过源代码翻译器。
  他毕业于牛津Balliol大学,获得了物理学硕士学位。他还获得了Sussex大学天文学硕士学位。他在Imperial大学的Astronomy Group进行了2年的研究工作。

Alan Robinson
  1998年Symbian 成立不久,Alan Robinson即加盟其中。他的主要工作是编写消息和通信的文档和示例。他是本书重要的撰稿人。Alan是一个多才多艺的作者,曾经为Wirless Java for Symbian Devices(Wiley, 2001)撰稿。
  他毕业于剑桥大学,取得了文学和哲学学士学位。之后,开始对应用逻辑理论感兴趣,于是攻读了Middlesex大学的计算硕士学位。他曾经为一家新公司的消息传送中间件平台编写开发包,也曾经为IBM的MQSeries编写过开发包。

Arwel Hughes
  Arwel于1993年加入Psion,为Series 3a编写文档,同时进行一些软件开发。Symbian成立后,他也为Symbian OS编写文档和示例。他的工作具有重要意义,且令人兴奋。
  Arwel以前从事IBM的大型机工作,为GKN、Prudential Assurance、Shell和Chase Manhattan Bank(现更名为J P Morgan Chase)等公司进行程序开发和系统编程。他从Sheffield大学获得了应用数学学士学位。

Carol Holmes
  Carol于1987年大学毕业后进入Psion作为一名软件工程师,她获得了数学学士学位。她是Series 3产品家族的原始开发团队成员之一,由于该公司率先使用面向对象软件开发,所以Carol加盟该公司。她在返回Psion为Series 3a开发电子邮件软件之前,曾经为大型开发项目担当了几年的管理顾问。
  之后,Carol成为开发Psion Series 5的消息传送软件的开发团队领导人。此后,她还领导过Symbian的其他大型开发小组。不过,现在她在家为Symbian的开发过程及其改进进行分析和研究。她擅长管理、喜好积累(从制作卡片到摘录编辑)。她最喜欢的颜色是紫色。

colin Anthony
  加入Symbian后,Colin与系统集成团队一起工作,从事不同版本的连接性软件开发,最近为Symbian合作伙伴提供开发咨询。
Colin最初是一家国际医疗公司的初级电子工程师。他参加产品工程团队,从事医疗设备的新产品系统开发工作。在这期间,他开始涉及到该公司的新IT基础设施的部署,并萌发了重返学堂的想法。于是,他从Southampton大学获得了计算机科学学士学位。
  在工作之余,他热衷于攀岩、潜水和滑雪。

Dan Daly
  Dan在Symbian从事开发期间,他曾经为第三方厂商提供各方面的技术咨询。最近,Dan加入Partner Projects Group,该小组为合作伙伴提供支持和预约开发,并为技术问题提供建议和支持。
  Dan在2000年加入Symbian之前,曾经在GEC Marconi Defence Systems Division(现为BAE Systems)工作了数年,从事Aircraft Flight分析,以及重播软件的开发。他从Westminster大学获得了软件工程学学士学位。

Dr David Cunado
  David于1999年加入Symbian的浏览器开发小组。开发Web浏览器后,转移到WAP浏览器开发上,两者均发布于Nokia 9210上。此后,他一直从事Symbian OS的传输框架开发工作。包括让该框架支持WSP、接收HTTP请求以及发送管道传送的HTTP请求。
  David以前曾经参加过Southampton大学的生物统计学研究,使用一种新的特征抽取技术(叫做Velocity Hough Transform),根据步法来调查人体识别。他根据此项研究发布了多部作品,包括合作撰写的生物统计学书籍:Personal Identification in Networked Society(A Jain、 R Bolle和Pankanti著)。

Dominic Pinkman
  Dominic于1995年加入Psion,当时是一名技术文档作者,一直工作到公司发展为Psion Software以及现在的Symbian。他负责为Symbian OS编写和维护API的技术说明文档,尤其针对应用程序引擎、应用程序基础、应用程序框架和图形子系统。
  他获得了Kent大学的计算机科学硕士学位、Leicester大学的现代语言研究学士学位。他的兴趣包括室内曲棍球和弹奏曼陀林琴。

Elisabeth Mawe
  Elisabeth于2000年加入系统文档组,曾经参与设计和编写Symbian Developer Library,专攻操作系统定制工作、包和生成工具。
  Elisabeth拥有Malardalens Hogskola and Coventry大学的技术通信和信息设计专业学士学位,同时从Reading大学获得了当代英语语言和语言学硕士学位。她1996年毕业后,以一名技术作家、信息设计师以及网络编辑师的身份开始工作,为英国不同的IT公司提供服务,为网络管理和市场研究软件编制文档。

Ian Bunning
  Ian于2001年从剑桥大学毕业后加入Symbian。他现在是Personal Area Networking团队的一名工程师,主要处理红外线和OBEX,也从事USB和蓝牙的开发。
  在大学学习时,他是学生会的周刊Cambridge Student的制作负责人。他协助两个编辑小组,确保他们的文章图片能够顺利出版。在工作之余,他是一名敏锐的摄影师,偶而也是一名珠宝商。

Ian McDowall
  Ian于2000年加入Symbian,现为一名技术架构师,负责连接性工作。他担当过的角色有开发人员、项目管理人员、技术管理人员,质量管理人员和过程顾问(包括国际会议的演讲)。
  他获得了剑桥大学的硕士学位、Warwick大学的MBA。作为一名具有20多年经验的软件工程师,他与许多软件公司打过交道,接触过15种以上的操作系统,开发的软件从企业系统到嵌入式软件。他的夫人是Lorraine,他们有2个小孩Ross和Kelly,还有许多宠物。

John Crickett
  John是一名有经验的独立软件开发人员,擅长面向对象软件工程。他是英国标准协会C++语言小组的成员之一。他经常为Association of C and C++ Users(ACCU)的杂志撰写一些C++和Java软件开发的文章。通过他的网站www.crickett.co.uk可与他联系。

John Davis
  John已为Symbian工作了6个月。他为一些主要的C++应用程序编写了一些内部指导,而且拥有8年的业界经验,他最初是一名C程序员,负责编写通信包。
  他毕业于Dublin和Aberystwyth,他爱好旅游。他已在网上发表了多篇旅游方面的文章。在www.heldencrow.com可以找到他的档案。

John McAleely
  John工作于Symbian的合作项目组,为重要合作伙伴准备Symbian OS产品时提供技术支持。最近的合作开发项目包括音频引擎开发、Symbian OS到新硬件平台的移植,并为全球开发人员传递技术培训材料。
  John从2000年开始在Symbian工作。以前负责为PC编写DVD软件,同时在业余时间为Psion计算机编写程序。他从英国皇家理学院获得了软件工程硕士学位。

John Pagonis
  John于1998年加入Symbian,他在参与个人区域网络小组之前,从事Ericsson R380智能手机的开发,以实现Symbian OS下的蓝牙服务。
最近,他与emerging技术和电话技术小组一起工作。John还是一名在职博士生,他还从事自己的学术研究,重点研究信息超载问题。其他兴趣包括计算机和无线个人区域网络、软件代理、软件工程学、组织过程模式、对象技术、耐用无线信息设备、资源约束性系统和用户界面。
  John毕业于Essex大学的计算机和网络专业,并取得了计算机和信息网络的硕士学位。他是一名业余武术爱好者、开放源代码和免费软件提倡者。John相信,精读比通读更好。

Laura McLeod
  Laura于2001年作为一名技术作者加入Symbian。他为Symbian Developer Library编写了大量参考文档,包括Versit(一种应用程序引擎)和文件系统的文档。在加入Symbian之前,他还从事过金融中间件软件的定制工作。

Malcolm Box
  Malcolm于1988年加入Symbian基础团队。从事Ericsson R380智能手机的内核开发后,转移到个人区域网络团队。他是一名技术架构师,负责过Symbian OS蓝牙栈的开发,此技术在Nokia 7650和Sony Ericsson P800上得到了应用。最近,他在日本工作,领导一个系统架构小组。在英国,Malcolm工作范围包括具有Symbian的日本授权的产品开发。Malcolm从Newcastle大学获得了微电子和软件工程硕士学位。他的第一个工作单位是Nortel,在那里,他为ATM和交换设备设计了VLSI电路。
  工作之余,Malcolm维护LXR代码交叉引用项目,并编写其他一些免费软件。他感谢David Amos和Tim Ocock在审阅中提供的帮助,感谢Andrew Thoelke在服务器启动代码上提供的帮助。他还感谢他的家庭允许他在周末写作,而没有尽义务去陪伴他们。

Nao Kagabu
Nao于2000年12月加入Symbian的日本研究小组。从事过若干研究项目工作后,他转移到英国Symbian。此后,他为重要合作伙伴提供技术支持,在Symbian OS中集成他们的技术。最近,他加入了Partner Projects Group。
Nao以前曾经从事GPS汽车导航工作达6年之久。他从日本丰桥工业大学获得了软件工程硕士学位。

 
关于本书:

  本书是Symbian公司内部的工程师的经验集成,为Symbian OS手机编写C++应用程序提供了坚实的基础。本书不打算讲授Symbian OS应用程序开发的每一个知识点,这也不是用一本书的篇幅所能囊括的。不过,阅读本书,无疑能将读者带入Symbian OS开发的殿堂,让读者深入理解Symbian OS的基本原理。本书讲解中使用若干有针对性的例子进行了有益的补充。
  本书共分4部分,每一部分的第1章描述一个教学示例程序,其后各章根据这个例子提出的问题展开讨论。这种讲解方式的优点是,读者在学习过程中,总是可以有的放矢,而且可以随时利用示例辅助学习。
  第1部分(第1章~第3章) 简介Symbian OS。除了解释主要开发工具外,还介绍整体系统结构以及Symbian OS使用面向对象和C++的方式。
  第2部分(第4章~第8章) 解释创建简单GUI(图形用户界面)应用程序所需的基本类、资源、API和编程约定。
  第3部分(第9章~第15章) 介绍编写重要的独立应用程序的相关知识。先详细讨论如何有效利用图形和文件API,然后介绍将应用程序打包后发布给终端用户、确保应用程序代码与设备无关的实用知识。
  第4部分(第16章~第20章) 介绍系统编程、通信和事件处理的相关知识。通常学习这部分内容,可以为Symbian OS开发复杂和高响应灵敏度的应用程序。
  Symbian OS广泛应用于屏幕尺寸各异的手机上。一些手机具有完整的字母数字式键盘,一些手机具有触摸式屏幕,还有的手机两者均不具备。为了适应这种复杂的变化,必须进行相应的用户界面设计。本书提供的材料尽可能做到独立于特定的用户界面。不过,实际应用程序运行于真实的手机上,因此,在必要的时候,必须选择一些用户界面(如UIQ和Sony Ericsson P800手机)作为具体例子。在需要引用特定的编译工具时,我们将使用Metrowerks C++编译器和Metrowerks CodeWarrior IDE。
  本书详细介绍了Symbian OS软件开发包。除此书之外,UIQ SDK将是首要的参考资料,它介绍了这里讲解的核心Symbian OS API。如果需要了解特定手机的更专业知识以及最新消息,则可能需要参考相关手机的SDK,这可以从相关生产商那里获取。
  SDK包含有用的指导材料、示例和源代码,它们一起组成了重要的开发人员资源。在与本书内容相关的地方,会为读者地指出相关资源。不过,一般情况下,参阅SDK时找到的信息比本书提供的信息要多。

本书的读者对象
  如果你能用C++编程(不管熟悉程度如何),则适合于阅读本书。Symbian OS完全以C++写成、且面向计算机和移动通信涉及的广泛领域,作为一个实际、全面的系统,它为我们在市场、企业和系统编程方面提供了前所未有的机会。
  除了C++程序员外,本书还适用于其他读者:
· 希望利用Symbian OS技术寻求移动解决方案的其他程序员或管理人员。
· 以Symbian OS技术为目标的咨询人员、培训人员以及作者。
· 对系统设计感兴趣的所有人,因为Symbian OS自己拥有完整、重要的示例。

约定
  一些重要、不应该忘记的信息放在此处所示的框中。这些信息与上下文有直接相关。
  本样式用于对当前讨论进行补充说明。
  本书中还应用了若干种不同的字体。源代码、文件内容使用如下约定:

  Line that show concepts directly related to the surrounding text are shown on a gray background
  在命令行输入的命令使用如下样式:

  abld buld winscw udeb

 
   相关丛书
Visual C++.NET数据库开发经典案例解析

定价: 48元
会员价: 38.4元
放入购物车
Visual C++权威剖析——MFC的原理、机制与开发实例

定价: 65元
会员价: 52元
放入购物车
21天学通Visual C++

定价: 49.8元
会员价: 39.84元
放入购物车
 
21天学通C++

定价: 49.8元
会员价: 39.84元
放入购物车
C和C++基础教程与题解(第2版)

定价: 59元
会员价: 41.3元
放入购物车
C++编程规范——101条规则、准则与最佳实践

定价: 35元
会员价: 24.5元
放入购物车
 
数据结构课程设计案例精编(用C/C++描述)

定价: 45元
会员价: 36元
放入购物车
Visual C++程序设计与实践

定价: 31元
会员价: 24.8元
放入购物车
Visual C++.NET数据库开发技术与实践

定价: 49元
会员价: 39.2元
放入购物车
 
现代C++程序设计

定价: 58元
会员价: 46.4元
放入购物车
面向对象程序设计—Visual C++

定价: 34元
会员价: 27.2元
放入购物车
C++大学教程(第3版)

定价: 49.8元
会员价: 39.84元
放入购物车
 
C++高级编程

定价: 88元
会员价: 70.4元
放入购物车
Visual C++.NET基础教程与上机指导

定价: 29元
会员价: 23.2元
放入购物车
数据结构与问题求解(C++版)(第2版)

定价: 86元
会员价: 68.8元
放入购物车
 
C++ Primer(第4版)习题解答

定价: 45元
会员价: 31.5元
放入购物车
C++工程程序设计

定价: 54元
会员价: 43.2元
放入购物车
数据抽象和问题求解——C++语言描述(第4版)

定价: 79.8元
会员价: 63.84元
放入购物车
 
C++精解和程序设计(第4版)

定价: 59元
会员价: 47.2元
放入购物车
汇编语言与计算机体系结构——使用C++和Java

定价: 79元
会员价: 63.2元
放入购物车
 

目录:

第1章 起步 1
1.1 使用仿真器 1
1.1.1 启动仿真器 1
1.1.2 GUI样式 2
1.2 文本版本的Hello World 4
1.2.1 程序hellotext 4
1.2.2 项目定义文件 7
1.2.3 组件定义文件 8
1.2.4 从命令行生成 8
1.2.5 在Metrowerks IDE中生成 10
1.2.6 在目标机器上运行 10
1.3 小结 12
第2章 系统结构 13
2.1 硬件资源 13
2.2 软件基础知识 15
2.3 进程、线程和上下文切换 16
2.4 可执行程序 17
2.4.1 执行的位置 18
2.4.2 载入和共享 18
2.4.3 缩减大小 18
2.4.4 启动应用程序和服务器 19
2.5 电源管理 19
2.6 内核和E32 20
2.7 设备驱动程序 21
2.8 定时器 21
2.9 内存 22
2.9.1 进程和线程内存 23
2.9.2 在DLL中无可写静态数据 24
2.10 文件 25
2.11 事件处理 26
2.12 剖析事件处理 26
2.13 活动对象 27
2.14 多任务处理和抢占 28
2.15 服务器 29
2.16 线程产生作用的地方 30
2.17 本书涉及的API 31
2.18 小结 33
第3章 C++和面向对象 34
3.1 基本类型 34
3.2 命名约定 35
3.2.1 类名 36
3.2.2 数据名 36
3.2.3 函数名 37
3.2.4 宏名 37
3.2.5 版式 38
3.2.6 小结 38
3.3 函数 38
3.3.1 函数参数 39
3.4 API 39
3.4.1 函数类型 40
3.4.2 DLL和其他API元素 40
3.4.3 导出的函数 41
3.4.4 虚函数和API 41
3.5 模板 42
3.5.1 瘦模板 42
3.5.2 模板中的数字 43
3.6 类型转换 43
3.7 类 43
3.7.1 接口 44
3.7.2 不良做法 45
3.8 设计模式 45
3.9 类图和UML 46
3.9.1 描述API 46
3.9.2 描述类 47
3.9.3 描述类之间的关系 47
3.9.4 描述派生关系 48
3.9.5 基数 49
3.10 小结 49
第4章 简单图形应用程序 50
4.1 名字变更的意义 50
4.2 图形架构简介 50
4.3 应用程序结构 51
4.4 图形化的"Hello World!"程序 53
4.4.1 程序 53
4.4.4 项目规范文件 53
4.4.3 获得UID 54
4.4.4 生成应用程序 55
4.4.5 在CodeWarrior IDE中生成 56
4.4.6 源代码 56
4.5 资源文件 63
4.5.1 头 64
4.5.2 定义快捷键和菜单 64
4.5.3 字符串资源 66
4.6 实际应用 67
4.7 启动应用程序 67
4.8 命令和事件处理 68
4.8.1 从菜单栏中由指针生成的命令 68
4.8.2 菜单栏中的键盘生成命令 69
4.8.3 快捷键中的命令 69
4.9 终止应用程序 70
4.10 目标式调试 70
4.11 设置MetroTRK 70
4.11.1 配置 71
4.12 启动MetroTRK 71
4.13 设置CodeWarrior ID 71
4.14 调试应用程序 72
4.15 小结 72
第5章 字符串和描述符 73
5.1 字符串与内存 74
5.1.1 C中的字符串 74
5.1.2 Symbian OS中的字符串 74
5.2 修改字符串 77
5.2.1 修改C字符串 77
5.2.2 修改Symbian OS的字符串 78
5.2.3 修改HBufC 78
5.2.4 描述符类型小结 80
5.2.5 在接口中使用抽象类 81
5.2.6 再论文字 81
5.3 标准描述符函数 82
5.3.1 基本函数 83
5.3.2 比较 83
5.3.3 搜索 83
5.3.4 提取 83
5.3.5 清除和设置 84
5.3.6 操作数据 84
5.3.7 字母操作 84
5.3.8 修剪和对齐 84
5.3.9 格式化 84
5.4 更多的文本API 84
5.5 Unicode和字符转换 85
5.6 二进制数据 86
5.7 小结 88
第6章 错误处理和清理 89
6.1 错误类型 89
6.2 处理内存不足的错误 91
6.2.1 Uikon 调试键 91
6.2.2 Memorymagic应用程序 92
6.2.3 分配、销毁和堆平衡 93
6.2.4 堆失败 97
6.2.5 异常退出的工作方式 98
6.2.6 清理栈 101
6.2.7 两阶段构造 104
6.3 清理规则小结 108
6.4 C类和T类 109
6.5 R类 110
6.5.1 作为成员变量的R类 111
6.5.2 错误码返回与L函数 112
6.5.3 清理栈上的R类 112
6.6 用户错误 113
6.7 严重提示的更多知识 114
6.8 测试引擎和库 115
6.9 小结 116
第7章 资源文件 118
7.1 为什么需要针对Symbian的资源
编译器 118
7.1.1 资源文件语法 118
7.1.2 可本地化字符串 120
7.1.3 多资源文件 122
7.1.4 编译资源文件 122
7.1.5 已编译资源文件的内容 124
7.2 小结 127
第8章 基本API 128
8.1 几个优秀的API 128
8.1.1 User类 128
8.1.2 动态缓冲 129
8.1.3 集合 132
8.1.4 区域设置 135
8.1.5 数学 136
8.1.6 变量参数表 136
8.1.7 字符串格式化 137
8.1.8 RDebug类 137
8.2 C标准库 138
8.2.1 移植问题 138
8.2.2 移植多线程程序 140
8.2.3 全局数据 141
8.2.4 结论 143
8.3 小结 144
第9章 独立应用程序 145
9.1 战舰游戏 145
9.2 综述 146
9.2.1 程序结构 146
9.2.2 引擎 147
9.2.3 控制器 147
9.3 引擎类 148
9.3.1 舰船类 149
9.3.2 舰队类 150
9.3.3 游戏引擎类 154
9.4 视图类 155
9.4.1 构建视图 156
9.4.2 绘制视图 156
9.4.3 处理事件 161
9.5 换算和缩放 162
9.6 控制器 166
9.6.1 访问UI环境 167
9.6.2 缩放 167
9.7 应用程序UI 169
9.8 持久性存储 171
9.8.1 作为基于文件的应用程序的
Solo Ships 172
9.8.2 存储和还原 172
9.8.3 创建默认文档 175
9.8.4 应用程序UI和文档 176
9.9 双人战舰游戏 176
9.9.1 视图架构 176
9.9.2 双人战舰游戏视图 178
9.9.3 舰队视图 178
9.9.4 隐藏器视图 182
9.9.5 视图测试程序 182
9.9.6 声音效果 183
9.10 小结 184
第10章 对话框和具体控件 186
10.1 对话框介绍 186
10.1.1 查询对话框 186
10.1.2 单页对话框 187
10.1.3 多页对话框 188
10.1.4 提示文本 188
10.1.5 控件 189
10.1.6 对话框处理 189
10.1.7 模态 190
10.1.8 小结 190
10.2 一些简单对话框 190
10.2.1 资源文件定义 192
10.2.2 对话框代码 193
10.2.3 只读对话框 196
10.2.4 简单对话框处理 197
10.3 对话框API 200
10.3.1 资源规范 200
10.3.2 添加按钮 200
10.3.3 基本函数 201
10.4 对话框常用控件 203
10.4.1 按钮 204
10.4.2 列表 205
10.4.3 编辑器 205
10.4.4 在对话框中使用控件 206
10.4.5 访问控件 206
10.4.6 对话框中的自定义控件 207
10.5 标准对话框 208
10.5.1 警报 208
10.5.2 查询 208
10.5.3 其他标准对话框 209
10.6 小结 209
第11章 图形显示 210
11.1 绘图基础 210
11.1.1 控件 211
11.1.2 Draw()概览 211
11.2 CGraphicsContext API 213
11.2.1 坐标类 214
11.2.2 设置图形上下文 215
11.2.3 绘图函数 216
11.3 绘图和重绘 218
11.3.1 模型、视图和控制器模式 219
11.3.2 Draw()契约 220
11.4 无闪烁重绘 222
11.4.1 绘制一切 223
11.4.2 状态视图更新 224
11.4.3 命中报告 225
11.4.4 光标移动 226
11.5 屏幕共享 227
11.5.1 CONE 227
11.5.2 自主窗口和寄宿控件 228
11.5.3 复合控件 231
11.5.4 绘图的更多知识 232
11.6 CCoeControl的绘图支持 236
11.6.1 控件环境 237
11.6.2 自主窗口和寄宿 238
11.6.3 组件 239
11.6.4 位置与大小 239
11.6.5 绘图 240
11.7 特殊效果 241
11.7.1 阴影 242
11.7.2 后台备份 242
11.7.3 动画 242
11.7.4 Uikon调试键 243
11.7.5 控件上下文 244
11.7.6 滚动 244
11.8 小结 244
第12章 交互图形 246
12.1 键、指针和命令基础知识 246
12.1.1 处理键事件 247
12.1.2 处理指针事件 248
12.1.3 将事件转换成命令 250
12.2 对话框中的交互 251
12.2.1 用户需求 251
12.2.2 一些基本抽象 252
12.2.3 程序员需求 253
12.2.4 复合控件 253
1.2.5 键分布和焦点 253
12.2.6 变暗和可见性 254
12.2.7 验证 255
12.2.8 控件观察者 255
12.2.9 容器 257
12.3 键处理过程回顾 258
12.3.1 焦点 260
12.3.2 文本光标 261
12.4 指针处理回顾 261
12.4.1 交互范例 261
12.4.2 选取相关性 262
12.4.3 抓取指针按下控件 262
12.2.4 捕获指针 262
12.4.5 获得高分辨率的指针事件 263
12.4.6 处理指针事件 263
12.4.7 自定义指针和键声音 264
12.5 窗口服务器和控件环境API的
更多知识 264
12.5.1 应用程序与窗口服务器的
通信 264
12.5.2 窗口类型 265
12.5.3 标准窗口 266
12.5.4 窗口组 267
12.6 shell 268
12.7 小结 268
第13章 文件、流和存储 269
13.1 基于文件的应用程序 269
13.1.1 用户和系统文件 270
13.1.2 UIQ应用程序文件位置 271
13.1.3 命名和位置约定小结 271
13.2 API引论 272
13.3 文件服务器 272
13.3.1 文件服务器会话 273
13.3.2 当前目录 274
13.3.3 驱动器、文件系统和存储
介质 274
13.3.4 文件 275
13.3.5 目录 275
13.3.6 文件名解析 276
13.4 streams程序 277
13.4.1 与文件服务器建立连接 278
13.4.2 文件写入 279
13.4.3 回读 283
13.4.4 文件名解析 284
13.4.5 文件API小结 285
13.5 流 285
13.5.1 内部格式和外部格式 285
13.5.2 外部化和内部化数据的途径 286
13.5.3 流类型 291
13.6 存储 292
13.6.1 直接文件存储 292
13.6.2 嵌入式存储 294
13.6.3 永久性文件存储 295
13.7 存储类型 297
13.8 字典存储和.ini文件 298
13.9 UIQ应用程序架构 299
13.10 小结 300
第14章 收尾工作 302
14.1 添加按钮 302
14.1.1 创建位图 303
14.1.2 位图转换 304
14.1.3 修改资源文件 305
14.1.4 生成应用程序 307
14.1.5 bmconv工具的补充说明 307
14.2 添加应用程序图标 308
14.2.1 创建图标 309
14.2.2 添加标题 309
14.2.3 重新生成应用程序 310
14.2.4 aiftool的补充说明 310
14.3 为应用程序提供安装支持 311
14.3.1 安装文件的安全保护 312
14.3.2 生成包文件 313
14.3.3 生成最终的SIS文件 315
14.3.4 SIS文件的安装 315
14.3.5 SIS文件的检查和卸载 316
14.3.6 应用程序的发行 316
14.4 UIQ应用程序的设计原则 317
14.4.1 GUI规划 317
14.4.2 设计列表视图和详细视图 318
14.4.3 设计菜单和文件夹 318
14.4.4 标准菜单项 319
14.4.5 创建对话框 319
14.4.3 考虑文本输入 319
14.4.7 提供文本和消息 319
14.4.8 使用滚动箭头和滚动条 320
14.4.9 适应各种缩放比例 320
14.4.10 应用程序间的链接 320
14.5 数据处理 320
14.6 小结 321
第15章 与设备和尺寸无关的图形 323
15.1 应用中与尺寸和目标无关的绘图 323
15.1.1 与设备无关的绘图 326
15.1.2 使用视图 330
15.1.3 管理缩放因子 331
15.1.4 视图和重用 332
15.1.5 设备无关绘图的小结 334
15.2 深入介绍GDI 334
15.2.1 位图传送和位图 335
15.2.2 深入介绍字体 337
15.2.3 关于打印的更多知识 338
15.2.4 色彩 339
15.2.5 Web浏览 341
15.3 开发人员对于设备无关代码的探索 341
15.3.1 实际的设备影响 342
15.4 GUI系统 342
15.4.1 Symbian OS GUI系统的发展 342
15.4.2 主要GUI组件 345
15.5 小结 346
第16章 多用户应用程序 347
16.1 Symbian OS中的通信 347
16.2 不带通信的Battleships 348
16.2.1 视图和菜单技巧 350
16.2.2 面向对象管道技术 351
16.2.3 不同的通信 352
16.3 TOGS 352
16.3.1 TOGS的形式 353
16.3.2 起点--数据报和对话 353
16.3.3 GSDP:游戏会话数据报协议 354
16.3.4 BSP:Battleships协议 355
16.3.5 测试程序 355
16.3.6 模式重用 356
16.3.7 在TOGS上进行构建 357
16.4 使用游戏 357
16.4.1 实际玩游戏 358
16.4.2 RGCP中的可靠性 358
16.4.3 SMS 359
16.5 原理剖析 359
16.5.1 状态视图 361
16.5.2 处理攻击请求 361
16.5.3 检查条件 362
16.5.4 攻击处理完整过程 364
16.6 更深入介绍Battleships 368
16.6.1 更理想的Battleships 368
16.6.2 其他游戏 370
16.6.3 单人游戏 371
16.6.4 基础结构的改进 371
16.7 小结 373
第17章 活动对象 374
17.1 一个简单活动对象 374
17.1.1 构造和析构 376
17.1.2 请求和处理事件 377
17.1.3 取消请求 378
17.2 工作方式 378
17.2.1 取消请求的更多知识 379
17.2.2 错误处理 381
17.2.3 非抢占和优先级 381
17.2.4 启动和终止规划器 382
17.2.5 在活动规划器中添加功能 383
17.2.6 框架小结 384
17.3 活动对象模式 387
17.3.1 维护未完成的请求 387
17.3.2 状态机 390
17.3.3 处理完成的接口 392
17.3.4 长期运行的任务和增量接口 393
17.3.5 区分优先级并维护响应
灵敏度 394
17.4 小结 395
第18章 客户端-服务器框架 396
18.1 引言 396
18.1.1 处理常规请求 397
18.1.2 建立会话 398
18.1.3 启动服务器 399
18.1.4 处理异步请求 399
18.1.5 结束会话并在客户端消亡后
清理 400
18.1.6 在服务器消亡后清理 400
18.1.7 处理一个会话中的多个对象 400
18.2 性能 401
18.2.1 客户端缓冲 402
18.2.2 高级事务 403
18.2.3 数据缓存 403
18.2.4 相同进程中的相关服务器 404
18.2.5 共享内存 405
18.3 服务器和线程 407
18.3.1 在线程间共享客户端对象 407
18.3.2 服务器中的多线程 408
18.3.3 时间起关键作用的服务器
性能 408
18.3.4 线程优先级 409
18.4 客户端-服务器API 409
18.4.1 线程基础 410
18.4.2 线程间数据传输和数据包类 411
18.4.3 客户端对象 412
18.4.4 服务器端的对象 415
18.5 小结 419
第19章 GSDP服务器 420
19.1 软件结构 420
19.2 客户端接口 421
19.2.1 消息传递函数 423
19.2.2 监听和接收 424
19.2.3 连接和断开 426
19.2.4 作为DLL的客户端API 428
19.3 服务器实现 429
19.3.1 消息处理 430
19.3.2 发送数据报 435
19.3.3 使用ECOM框架 437
19.3.4 使用协议 438
19.3.5 接收数据报 445
19.3.6 启动和关闭 450
19.4 小结 456
第20章 GDP实现 457
20.1 任务、状态和状态机 457
20.1.1 GDP状态机 458
20.2 SMS实现 462
20.2.1 ESOCK和SMS的Symbian
OS支持 462
20.2.2 GDP-SMS消息格式 463
20.2.3 GDP-SMS实现 463
20.3 蓝牙实现 471
20.3.1 蓝牙的Symbian OS支持 472
20.3.2 GDP-BT的协议映射 472
20.3.3 GDP-BT实现 472
20.4 小结 478
附录A 示例项目 480
A.1 独立项目 480
A.2 Battleships项目 481
A.3 TOGS项目 481
附录B 开发人员资源 482
B.1 Symbian开发人员网络 482
B.2 Symbian OS开发人员工具 482
B.2.1 AppForge 482
B.2.2 Borland 482
B.2.3 Forum Nokia 482
B.2.4 Metrowerks 483
B.2.5 Sun Microsystems 483
B.2.6 Texas Instuments 483
B.2.7 工具文档 483
B.3 Symbian OS SDK 483
B.3.1 Symbian OS v7.0 484
B.3.2 Symbian OS v6.1 484
B.3.3 Symbian OS v6.0 484
B.3.4 Symbian OS v5 484
B.4 其他SDK和SDK扩展 485
B.4.1 OPL 485
B.4.2 Visual Basic 485
B.4.3 Intel PCA开发包 485
B.4.4 Texas Instruments Innovator开发包 485
B.5 开发人员支持 485
B.5.1 Ericsson Mobility World 486
B.5.2 Forum Nokia 486
附录C TOGS指南和参考 487
C.1 GDP 487
C.1.1 Symbian OS的实现代码 488
C.1.2 GDP网络回送实现 489
C.1.3 GDP聊天 490
C.1.4 继续探讨GDP 490
C.2 GDSP 490
C.2.1 Symbian OS客户端实现 493
C.2.2 GSDP聊天 495
C.2.3 继续介绍GSDP 496
C.3 RGCP 496
C.3.1 协议综述 496
C.3.2 RGCP Symbian OS的实现 501
C.3.3 RGCP交谈 504
C.3.4 深入探讨RGCP 504
C.4 战舰协议 504
C.4.1 协议综述 505
C.4.2 游戏UI 508
C.4.3 程序结构 509
C.4.4 继续探讨BSP 509
C.5 小结 509
附录D 仿真器参考 510
D.1 仿真器内部 510
D.1.1 源代码兼容性 511
D.1.2 驱动盘映射 512
D.1.3 目录体系 513
D.1.4 仿真器启动 514
D.1.5 仿真器启动参数 515
D.1.6 仿真器命令行语法 515
D.1.7 键映射 516
D.1.8 通信 516
D.1.9 仿真器有多好 517
D.1.10 调试键 519

 
Copyright ©1998~2004 华储网. All rights reserved。
To comment on this site,E-mail :
webmaster@huachu.com.cn