Subject: Series 60 2.0 :C++应用软件设计简介(中)
admin
Administrator
Rank: 9Rank: 9Rank: 9



UID 1
Digest Posts 0
Credits 2856
Posts 52
Money 11
Reading Access 200
Registered 8-3-2007
Status Offline
Post at 16-3-2007 15:45  Profile | Blog | P.M. 
Series 60 2.0 :C++应用软件设计简介(中)

5.2 Hello World GUI 应用软件

    为了改善应用软件的可维护性和灵活性,Symbian 操作系统下的应用软件通常被分为两个主要部分:引擎部分,也就是众所周知的软件模型,和用户界面(UI)。引擎部分包括了用于描述应用软件数据、算法和任何数据持续性的数据结构。用户界面(UI)通常又被分为数据的屏幕显示和一个决定应用软件整个运行行为的处理程序。本文稍后将对Symbian 操作系统GUI 应用软件中的四个关键的类进行详细的讨论。

5.2.1 从命令行创建和运行应用程序

    打开一个命令提示符并切换到包含Series 60 SDK 的驱动器。搜索包含项目定义(.mmp)和组件定义文件(bld.inf)的文件夹,例如:\Symbian\7.0s\Series60Ex\HelloWorldBasic\group.
下面创建范例。键入:
bldmake bldfiles
此命令将产生一个新文件,即ABLD.BAT;这个命令文件总是在需要的时候产生,并且无需进行编辑。
下面编译并链接项目。键入:
abld build wins udeb
这将为Series 60 调试仿真器软件创建项目。
下面在命令提示符下运行该应用软件。键入:
epoc
Series 60 调试仿真器将启动,并且 Series 60 系统的外壳如图2 所示。使用仿真器面板上的方向键或PC 机上的方向键能够寻找到HelloWorldBasic 应用程序,然后,按下方向控制键中间的执行按钮即可调用该应用程序。

5.2.2 从IDE 构建和运行应用软件

通常,诸如HelloWorldBasic 应用软件的项目是在Microsoft Visual C++6.0 IDE 内进行创建和运行的,如下所示。
如果ABLD.BAT 文件不存在(或如果.mmp 文件或bld.inf 文件已经改变),必须以键入的方式生成下面的创建命令文件:
bldmake bldfiles
接着键入:
abld makefile vc6
这将为VisualC++创建项目文件和工作空间文件(.dsp 文件和.dsw 文件)。它们位于\epoc32\build 子目录结构下,例如:
\epoc32\build\symbian\7.0s\Series60Ex\helloworldbasic\helloworldbasic\wins 通过打开在Visual C++中的工作空间文件Helloworld.dsw,并且按F7 键,就能在IDE 内创建应用软件,然后,按Ctrl+F5 可运行该软件。一旦需要执行文件,可在SDK 根目录下文件夹\Epoc32\Release\wins\udeb 中找到Epoc.exe。这样就能够启动调试仿真器,这也是开发项目的缺省方法。
Series 60 调试仿真器将启动,并且 Series 60 系统的外壳如图2 所示。使用仿真器面板上的方向键或PC 机上的方向键能够寻找到HelloWorldBasic 应用程序,然后,按下方向控制键中间的执行按钮即可调用该应用程序。
除此之外,通过按下调试器的F5 键,也可以运行应用软件。不要理睬关于Epoc.exe 程序无调试信息的告警提示。 注意:是应用软件(本质上是一个DLL),而不是仿真器软件本身需要调试。在告警提示的小方块中打勾,以便以后不再显示此项目的告警提示。应用软件和其相关的调试信息位于
Epoc32\Release\wins\udeb\z\system\apps\HelloWorldBasic.

5.3 应用软件UI 元素

  状态框是靠近屏幕顶部的实条(蓝色)加上其上部的区域。主框是状态框和位于屏幕底部的软键标记之间的中间部分。控制框是包括软键标记在内的紧接着主框下的区域。

“ Hello world” 应用软件状态框显示了当前应用软件和当前状况的状态信息,以及关于设备状态的一般信息,如信号强度 和电池充电状态等。它占据屏幕的顶部。在一些应用软件中或某些情形下,如在游戏软件中,状态框是不可见的。主框是屏幕的主要区域,应用软件在此显示其数据。通常该区域指客户矩形框,将被一个应用软件视图完全占据。控制框占据屏幕的底部并显示与两个软键有关的标记。控制框下的两个按钮为左软键和右软键,它们用于选择当前关联的选项菜单或标记操作。四方向的导航键可以进行上、下、左、右滚动,或按下中心部位进行选择操作。

5.4 Symbian OS 下的应用软件架构

    UIKON 和标准EIKON 是应用软件框架的关键部分。它们不仅提供了启动应用程序的框架,而且
提供了一组丰富的标准控制组件(如:对话框、数字编辑器、日期编辑器等),这些组件是应用
软件在运行时需要使用的。一个典型的为Symbian OS 编写的应用软件实际上由四个独特的组件,每个组件对应UIKON/EIKON 框架内的相应类。它们是:

  • ? 应用软件外壳― ― 由CEikApplication 派生而来。该类首先被框架实体化。在被创建之后,它就负责对其它代码进行初始化。然后,就创建出新的CEikApplication 派生类。
  • ? 文档― ― 由CEikDocument 派生而来。所有应用软件都有一个CEikDocument 派生类,并在应用软件首次运行时由缺省CEikDocument 创建一个缺省文档文件。但不是所有应用软件都基于文件。即它们可能没有必要向提供用户创建、打开或编辑文档的功能。在这种不基于文件的应用软件中,例如如电话应用软件,文档类的实例是一个为创建一个AppUi 类实例需要的外壳,通常,它是一个模型/引擎
  • 实例。在基于文件的应用软件中,文档类也能够对永久存取器的数据存储和恢复进行管理。
  • ? 应用软件的UI― ― 由Uikon 类CEikAppUi 派生而来。该类提供了所有应用软件的主要功能,诸如事件处理,控制生成,访问许多有用系统的调用等等。通常, CEikAppUi 派生类负责创建一个或多个应用软件视图。
  • ? 视图― ― 提供用户实际在屏幕上看到的情景。所有应用软件都有一个缺省的视图,一些较复杂的应用软件,如日历应用应用软件,能提供多个视图。视图仅仅用于显示数据(如HelloWorld 内所示)或在交互式的应用软件中从用户收集数据。例如,在许多数据输入应用软件中,数据编辑器仅仅是视图中包含的Uikon 所提供的标准控件。在大多数的应用软件中,视图都由CCoeControl 派生而来的,即它们自己本身就是控件 。


5.5 Series 60 应用 软件框架

    Avkon 是一个专用于Developer Platform 2.0 for Series 60 的UI 层。它提供了大量的用户界面组件,并实现许多由UIKON 和 标准EIKONK 框架基类派生的类,而UIKON 和EIKON 标准框架基类可以提供Avko 应用软件特性和Developer Platform 2.0 for Series 60 的行为特征。

  • ? CAknDocument-该类是以一个基类的形式提供给应用软件文档的,它由CEikDocument 派生而来。利用该类,不需要启动就可以访问缺省应用软件文档文件。这种情况对大多数Avkon 应用软件是适宜的。当CEikDocument 类被用作应用软件文档的基类时,在缺省情况下,Avkon 不能进行文档文件的创建。
  • ? CAknAppUi-Avkon 应用软件(视图结构应用软件除外)由此类派生。该类支持多个Avkon 特有的功能:
  • ? 支持KeySound
  • ? 为CBA 和StatusPane 提供附件
  • ? TextResolver-从CAknAppUI::HandleError()对Avkon 特定的错误报告
  • ? Avkon 视图结构集成
  • ? Control dumping-调试功能
  • CAknViewAppUi-所有基于视图结构(参见下面的可选GUI 设计)的应用软件都必须由此类派生,而此类派生于CAknAppUi。应用软件视图可以由CAknView 派生而来。
  • 应用软件启动― ― 一个CeikApplication 类由 CAknApplication 派生而来。该类通过重载PreDocConstructL()和OpenIniFileLC(RFs& aFs)


对CEikApplication 进行修改。重载PreDocConstructL 可以确保被创建的应用软件实例不会已经出现。如果已经出现,则应用软件就切换到现有的实例并退出。这种检查操作只针对非嵌入应用软件。在缺省情况下下,Series 60 应用软件不支持.ini 文件。OpenIniFileLC()被重载为一个简单实施,即一旦被调用就退出。当使用.ini 文件时,应用软件就必须实施应用软件类中的这一方法,以便调用CEikApplication::OpenIniFileLC。

5.6 可选的GUI 设计

    应用软件的UI 可以简单得只有一个主屏幕,如计算器应用软件,或者包括多个屏幕的较复杂的应用软件,如消息应用软件。因此,经过挑选,可以采用下面三种结构方法来编写应用软件的GUI:

  • ? 传统的Symbian 操作系统控制结构― ― 派生于CCoeControl 的视图
  • ? 基于对话框的结构― ― 所有派生于对话框类的视图
  • ? 视图结构――视图切换,其中应用软件的试图由CAknView 派生而来。


应用软件结构的选择依赖于应用软件的复杂度、视图浏览、通信需求和屏幕布局的要求。无论选择那种结构,每个应用软件的顶层应用UI 类均从一个单应用软件UI 基类派生而来。基类并不强迫对UI 结构的任何选择,而这些选择必须由开发人员确定。
一直以来,Symbian 操作系统下的应用软件均采用由CCoeControl 派生的定制视图控件来编写,这些控件放置在应用软件控制堆栈之上,以便作为应用软件的视图。这些控件可以根据应用软件要求进行创建、终止、显示和隐藏,以便提供适当的行为。这种方法非常适合Avkon 中的应用软件。因为许多Avkon 应用软件将基于现有的以传统方法编写的UI,所以采用与Avkon 相同的方法是顺理成章的。

5.7 UI 的风格

    应用软件的视图、菜单和对话框等的实际外观可以按照Series 60 UI Style Guide进行较为专业的设计,该指南是Series 60 SDK 文档的一个部分。

5.8 Series 60 应用软件Wizard

    开发人员可能希望使用控制台HelloWorld 应用软件作为一个测试工具的基础,或者将GUI 版本
作为应用软件的起点。
另外,Series 60 AppWizard(包括在Series 60 SDK 之中)能够为开发人员提供了一个简单而方便的方法,以便在Visual Studio 内产生一个基本的GUI 应用软件项目。该应用软件Wizard 能够产生符合上述的三种UI 结构之一的项目。
AppWizard 将产生:

  • ? 四个基类(App, AppUI, Document 和 View)的代码段和说明,这些基类与大多数Symbian 操作系统下应用软件是关联的
  • ? 所有构建项目所需的构建和项目文件
  • ? 简单的资源文件和用作缺省应用软件图标的位图
  • ? 将应用软件安装到设备上需要的文件

AppWizard 的使用方法将在 “ Series 60 AppWizard Installation & User’ s Guide” 的Series 60 SDK 文档中有更为深入的描述。

5.9 GUI 应用软件的项目文件

    开发人员必须为每个开发项目生成组件定义(bld.inf)文件和一个项目定义(.mmp)文件。一个项目必须具有一个bld.inf 文件并与一个或多个.mmp 文件关联,即一个文件对应一个组件。简单项目只具有单个组件,如一个用于应用软件的.mmp 文件的引用。在诸如DLLs 这种除应用软件外还包括其它组件的较复杂的项目中,将会存在多个.mmp 文件。工具链利用组件定义文件和项目定义文件创建一个构建文件(ABLD.BAT)。该文件可有多种用途,例如,为Visual C++开发环境创建其它项目和工作空间文件,或者为调试或正式版本的模拟器或目标设备创建项目。如需获得更详细的有关bld.inf 和 .mmp 文件的语法描述,请参见Series 60 SDK 文档。

5.9.1 bld.inf

PRJ_MMPFILES
// Specify the .mmp files required for building the important component
// releasables.
\Symbian\7.0s\Series60_v20\Series60Ex\HelloWorldBasic\group\HelloWorldbasic.mmp
以上的组件定义文件(bld.inf)范例涉及到的文件是单个项目定义文件,即HelloWorldBasic.mmp。对于一个简单的应用软件或单个组件来说,通常所有定义都存放在一个bld.inf 文件中。

5.9.2 HelloWorldBasic.mmp

下面列出了HelloWorldBasic.mmp 文件的关键部分,并提供了对其主要声明语句的简短解释。一个项目定义(.mmp)文件能够定义平台中的项目特性和编译器不受约束的方式;然后, SDK 创建工具(abld.bat)将使用它为一些特殊平台产生特定的生成文件。
TARGET HelloWorldBasic.app
TARGETTYPE app
UID 0x100039CE 0x10005B91
TARGETPATH \system\apps\helloworldbasic
SOURCEPATH ..\src
SOURCE HelloWorldBasic.cpp
SOURCE HelloWorldBasicApplication.cpp
SOURCE HelloWorldBasicAppView.cpp
SOURCE HelloWorldBasicAppUi.cpp
SOURCE HelloWorldBasicDocument.cpp
SOURCEPATH ..\group
RESOURCE HelloWorldBasic.rss
USERINCLUDE ..\inc
SYSTEMINCLUDE \epoc32\include
LIBRARY euser.lib
LIBRARY apparc.lib
LIBRARY cone.lib
LIBRARY eikcore.lib
LIBRARY avkon.lib

  • ? TARGET 是应用软件的名称。
  • ? TARGETTYPE 是app,即GUI 应用软件。
  • ? TARGETPATH 指应用软件和其组件的所在位置― ― 通常在\system\apps\TARGETPATH 目录下。
  • ? UID 行为GUI 应用软件指定了一个唯一的系统识别符是0x100039CE 以及为应用软件本身指定的识别符是0x10005B91。
  • ? SOURCE、SOURCEPATH、USERINCLUDE 和SYSTEMINCLUDE 声明语句均是指源文件,这些源文件是用于具有源文件以及应用软件和系统头文件的路径信息的项目的。
  • ? RESOURCE 声明语句是指用来定义大多数用户界面元素如菜单、对话、字符串等的源文件。
  • ? LIBRARY 声明语句列举了为链接一个GUI 应用软件所需的应用软件框架和图形库。
  • ? AIF 声明语句是指包括图标和其它在应用软件资源文件中定义的应用软件特性的一个应用软件信息文件― ― 这些内容在稍后的章节6.2.1 节中将有更多的说明。
Top
 


All times are GMT+8, the time now is 5-9-2010 14:05

CopyRight © Symbianx.cn 2007 Powered By Discuz! 5
Clear Cookies - Contact Us - Symbian OS系统[S60,UIQ]开发中文翻译论坛 - Archiver

本站原文版权归原文作者所有,本站译文版权归本站所有,如需转载请注明原文和译文出处,否则追究法律责任