Symbian 入门与环境配置
一. 开发入门
1. S60/Symbian 应用程序常用架构/框架
2. Symbian 开发入门第一步
3. S60v1.2 N-GAGE QD 开发环境搭建(VC6 版)
4. S60 十大优秀软件
5. S60 系统手机类型及所用操作系统
6. S60 和 Symbian OS 的关系
7. S40 与 S60 的区别
8. 诺基亚 S60 手机隐藏代码
9. Symbian 60 系列 SDK 下载
二. 开发环境
1. Symbian 开发入门
2. Symbian 编程与开发环境设置
3. Symbian 开发环境入门
4. 用 Carbide 和 S60 SDK 构建 Symbian C++开发环境
5. 在 VS.NET 下配置 Symbian 开发环境
6. 基于 VS.Net 2003 的 S60 开发环境的搭建
三. 开发研究
1. S60 系统结构
2. S60 Hello world 程序讲解!
第一章 开发入门
第一节 S60/Symbian 应用程序常用架构/框架
所谓“应用程序架构”是指应用程序框架类的集合。基于所需的 设计,应用程序可以
具有稍微不同的架构,但是每种架构都有一些公共部分,称为“核心应用程序类”
一、先看一下基础部分,具体架构在第二部分介绍
()核心应用程序类
所有的 应用程序都具有一些基本功能:
提供一个用户界面,用于显示信息并允许用户进行交互
响应各种用户启动的事件,比如用户选择一个菜单项
响应系统启动的不同事件,比如导致屏幕重绘的 服务器事件
能够保存和恢复应用程序数据
可以唯一性的向框架标志自身
向框架提供有关应用程序的描述性信息,比如图标和标题等
这些类是:视图()、文档()、应用程序()、应用
程序 ()。
一个程序只能有一个文档,可以有多个视图。
()应用程序初始化
必须创建下面的每个方法,才能提供最小的 应用程序:
、所有 都实现一个全局函数 (),当应用程序启动时,框架将首先
调用该函数,该函数也称为 入口点,应用程序必须存在该函数。每个 应用程
序都是一个多态 。
、让框架调用 (),该函数是由 导出的唯一函数。
、创建应用程序类的一个实例,并返回它的指针,以后框架使用该指针完成应用程序
的创建。
、由框架调用 ()返回应用程序的 。该函数必须返回在 文件
中指定的值,并且可用于确定应用程序的实例是否正在运行。
、框架获取指向新创建 类的指针, ()。
!、()具体去创建
"、矿见获取 类的指针, ()。
#、由 ($)()具体创建。
这样一个最简短直观的框架就创建完毕。
()重要的 方法:
提供了许多方法,框架可以调用这些方法通知每个应用程序各种事件。
%&'$()用于处理用户按键
%( " $()当应用程序切换到前台或从前台切换到后台时调用
该函数,默认的实现可以处理键盘焦点的改变。
%')$()传递由窗口服务器生成的事件
%*$()可以自己定义的自定义事件的通知。默认的
实现可以处理颜色方案改变的通知。
%()用于处理用户选择的菜单项
(+)设计应用程序
关于术语“视图($)”:
“视图”是概念性的术语,含义是“数据模型在屏幕上的表示”,实际上由一个或多个从
派生而来的 控件实现视图,这些控件按层次结构进行组织。父控件通常
被称为容器( ),除了用于实现视图的父控件,这种控件被称为对话框
(")
在 $, 视图切换架构中,术语“$, 视图”指的是系统范围内的 服务器注册
的类,它控制视图的实例化和析构。
二、常见的 symbian 应用程序架构:
每种架构都提供了设计应用程序 的不同方法――所有的架构都提供了提交“视图”或
应用程序数据可视化表示的方法,同时提供了一种用户用来与架构进行交互的机制。
先简单认识一下:基于对话框的架构和传统的基于 '- 的架构虽不相同,但
和 $, 视图切换架构相比,这两种架构彼此更为类似。原因是:
它们的特征是它们用于生成视图的 控件类型。
架构上几乎相同。也就是说,在这两种设计中, 类简单地“拥有”视图控件,因
此负责直接管理它们。
而 $, 视图切换架构从根本上不同于这两种方法,它的视图切换由系统范围地
服务器来完成。
()基于控件的传统 '- 控件
这些控件总是从 直接继承,用于表示从 直接继承的试图
类的标准术语是“容器”。
关于“ .:
可以将 认为是一个空的帐篷。通过继承这个类,可以创建各种各样的自
定义控件,自定义控件的功能和复杂性只受到程序员能力和想象力的限制。这种灵活性的
唯一不利之处是,控件确实类似于一个空帐篷,因为需要进行许多编码工作来提供重要的
功能。
在处理视图切换方面, 负责处理用户发出的视图切换请求。随后, 最终
的行为类似于一个巨大的开关,用于根据用户或系统的输入来激活或禁止容器。
注意: 类从 派生而来, 是所有控件的基类。
在自己的容器类中必须实现从 中的四个方法,框架将调用所有这些方法:
/#"()允许控件响应控件大小的改变
()绘制控件
)()返回控件拥有的控件数量
()对于容器拥有的每一个控件,框架调用该方法获取。
在 类中按照如下代码构造容器:
$#0 111 23
4
5) 236
7#0 11282336
9:;< 2#)36==在控件之间建立父子关系,在容器上调
用此方法。
>,2 36==将 推入到控件栈顶,例如可以接收
键事件
?
注意:如果使用这种架构实现带有多个视图的应用程序,则通过使用
>,()和 8$( ,()在不同的容器之间切换。
()基于对话框的架构
它不同于传统 '- 架构的是,它拥有的控件直接从对话框类家族继承而来。
对话框的主要优点是:相对于直接从 派生而来的控件,它需要较少的开
发工作,因为它们自动管理子控件的布局。
在 类中完成构造和运行:
$)"11) 23
4
5)) 236
"72$3)""6
"9:;< 2#)36
"9:@28A;<BA-B36
>,2"36
?
因为对话框是无模式的,@()将在调用后立刻返回。必须使用
>,()将对话框添加到控件栈中,因为无模式的对话框无法自己完成这项工作。
还有,必须在 的析构函数中销毁该对话框:
)"11C)"23
4
!2"3
4
8$( ,2"36
"6
?
?
()$, 视图切换架构
比前两种都复杂,引入另一个类作为 和容器之间的媒介。另外, 类从
, 继承,而不是继承于 ,。
前两个架构, 直接负责处理视图切换,它必须管理视图提交控件的实例化、删
除和显示。但是,基于 , 的类在这方面可以很明显地减少 地任务。