|
|
| |
| Series 60 2.0 :C++应用软件设计简介(中) |
| |
5.2 Hello World GUI 应用软件 为了改善应用软件的可维护性和灵活性,Symbian 操作系统下的应用软件通常被分为两个主要 部分:引擎部分,也就是众所周知的软件模型,和用户界面(UI)。引擎部分包括了用于描述应 用软件数据、算法和任何数据持续性的数据结构。用户界面(UI)通常又被分为数据的屏幕显示 和一个决定应用软件整个运行行为的处理程序。本文稍后将对Symbian 操作系统GUI 应用软件 中的四个关键的类进行详细的讨论。 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 10 版本 1.0 | 2004 年1 月28 日 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 图2:Series 60 仿真器 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 11 版本 1.0 | 2004 年1 月28 日 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. Developer Platform 2.0 for Series 60: C++应用软件设计简介| 12 版本 1.0 | 2004 年1 月28 日 5.3 应用软件UI 元素 参见图3,状态框是靠近屏幕顶部的实条(蓝色)加上其上部的区域。主框是状态框和位于屏幕 底部的软键标记之间的中间部分。控制框是包括软键标记在内的紧接着主框下的区域。 图3:“ Hello world” 应用软件 状态框显示了当前应用软件和当前状况的状态信息,以及关于设备状态的一般信息,如信号强度 和电池充电状态等。它占据屏幕的顶部。在一些应用软件中或某些情形下,如在游戏软件中,状 态框是不可见的。 主框是屏幕的主要区域,应用软件在此显示其数据。通常该区域指客户矩形框,将被一个应用软 件视图完全占据。 控制框占据屏幕的底部并显示与两个软键有关的标记。 控制框下的两个按钮为左软键和右软键,它们用于选择当前关联的选项菜单或标记操作。四方向 的导航键可以进行上、下、左、右滚动,或按下中心部位进行选择操作。 5.4 Symbian OS 下的应用软件架构 UIKON 和标准EIKON 是应用软件框架的关键部分。它们不仅提供了启动应用程序的框架,而且 提供了一组丰富的标准控制组件(如:对话框、数字编辑器、日期编辑器等),这些组件是应用 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 13 版本 1.0 | 2004 年1 月28 日 软件在运行时需要使用的。一个典型的为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 特有的功能: Developer Platform 2.0 for Series 60: C++应用软件设计简介| 14 版本 1.0 | 2004 年1 月28 日 • 支持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 派生的定制视图控件来编写, 这些控件放置在应用软件控制堆栈之上,以便作为应用软件的视图。这些控件可以根据应用软件要 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 15 版本 1.0 | 2004 年1 月28 日 求进行创建、终止、显示和隐藏,以便提供适当的行为。这种方法非常适合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++开发环境创建其它 项目和工作空间文件,或者为调试或正式版本的模拟器或目标设备创建项目。 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 16 版本 1.0 | 2004 年1 月28 日 如需获得更详细的有关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 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 17 版本 1.0 | 2004 年1 月28 日 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 节中 将有更多的说明。 Developer Platform 2.0 for Series 60: C++应用软件设计简介| 18 版本 1.0 | 2004 年1 月28 日
|
| |
|
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|