Symbian GUI 应用资源文件介绍 zz

来源:互联网 发布:老舍的人品 知乎 编辑:程序博客网 时间:2024/04/19 08:19

Symbian GUI 应用资源文件介绍
2008-10-11 09:18

对于 .mmp 文件和 .inf 文件应该已经比较熟悉,具体的你可以到这里了解

我们也经常看到 .h 文件和 .cpp 文件,他们是普通的C++文件,在这里,我们着重要说的上Symbian OS的资源文件:.rss 文件。
Symbain 使用资源文件来描述 GUI ,这些资源问都使用 .rss 扩展名。资源文件需要使用 rcomp (资源编译器)进行编译,使生成一个Symbian 应用程序在运行时使用的编译后的资源文件:.rsc 文件。 还有一种头问文件其扩展名为:.hrh ,这种头文件被 .cpp 文件和 .rss 文件共享,例如在某些情况下,可以创建一个包含 .hrh 文件的 .rh 资 源头文件,而这个 .rh 文件又被包含在 .rss 资源文件中。 需要注意的是,编译一个资源文件可以产生一些应用程序所需要的标识符,这样在编译完成以后,你可以得到一个 .rsg 文件,而这个文件将被 .cpp 文件包含。.rsg 文件是被资源编译器输出的资源头文件;.rsc 文件是资源编译器编译过的资源文件。 .loc 文件用于放置本地化的语言文字,比如你可以分别为中文和英文创建一个 .loc 文件,一个用于存放英文文本,一个用于存放中文文本。最后,还有一种 .aif 文件,.aif 文件是程序信息文件,包括了程序体系结构定义,是 Aiftool 程序的输出。

在 .rss资源文件中,可以使用以下这些语句:

语句描述NAME四个大写字母,在文档开头处指定STRUCT定义一个结构体,用于整合资源RESOURCE定义资源ENUM定义枚举类型,与C的语法类似CHARACTER_SET定义在资源文件中使用的字符集,如果是中文则可以使用

然后,可以来了解一下资源文件的语法了,由于资源文件需要首先有C预处理器进行处理,所以他的语法基本和C一致。RESOURCE是资源定义,资源有很多种类,具体可以到这里查看。RESOURCE 语句的语法如下:

RESOURCE <TYPE> <NAME> {
<KEY> = <VALUE> ;
[<KEY> = <VALUE> ; ...]
}

这 里的 <TYPE> 是指资源类型,他们通常定义在 .rh 头文件中。<KEY> 是符号资源 ID,它必须小写,可以使用下划线。它可以是一个标量值、列表值、或一个结构型值。标量值是指一个数字或字符串;列表值是在大括号中的一个列表,例如:

name = "Hello" ;
list = { 1 , 2, 3 };

而一个结构则可以使用如下语法:

<NAME> { 
<KEY> = <VALUE> ;
[<KEY> = <VALUE> ; ...]
}

<VALUE> 可以是一个标量值或是一个结构型值。所以结构是可以嵌套的。这是一个完整的示例:关于MENU_BAR、MENU_ITEM、MENU_PANE、MENU_TITLE的具体示例可以到这里查看。

RESOURCE MENU_PANE r_simplemenu_menu_pane
{
    items =
    {
       MENU_ITEM
       {
          command = ESimpleMenuCmdNewGame;
          txt = NEW_GAME_TEXT;
          cascade = r_simplemenu_game_submenu_menu_pane;
       },
       MENU_ITEM
       {
          command = EAknCmdExit;
          txt = EXIT_TEXT;
         }
    };
}

Symbian GUI 应用程序使用了资源文件,一个最小的GUI应用程序包括编译好的可执行程序(例如:HelloWorldBasic.app)和编译好的资源文件(例 如:HelloWorldBasci.rsc)。资源文件用来定义各种不同的资源,主要是GUI元素,另外还有一些用于显示信息的字符串。

要创建编译好的资源文件,首先要编写.rss资源文件,然后使用 rcomp (资源编译器)对它进行编译。当然,资源文件不仅仅是 .rss 文件,还包括与之相关的一系列文件,如.hrh 文件和.loc文件。

现在,我们可以来看看这些文件具体都包括了哪些东西。在资源文件 .rss中,主要包含了资源的定义。这里需要知道的是资源类型, 他们被定义在 .rh 文件中。本地化字符串被存放在一个 .loc文件中。另外,还有一些常量需要在资源文件和C++文件之间进行共享,这些常量被定义在 .hrh 文件中。定义的时候使用枚举类型,定义的语法能够被资源编译器编译,也能被C++编译器编译。当你编写完这些文件以后,你就可以使用资源编译器编译这些资 源,使用命令行可以直接对资源进行编译:

abld build winscw udeb

编译完成以后,你将获得一个 .rsc文件和一个 .rsg文件包含了一些数字代码,它由资源编译器生成,同时又和C++编译器共享。所以在随后的 .app文件将会使用 .hrh文件和.rsg文件中的定义。这种共享方式也就是应用程序使用资源的方式。

AIF (Application Information File) 文件

一个 Symbian GUI 程序,例如 HelloWorldBasci 要安装到目标设备上,至少包含三个文件:

HelloWorldBasic.app 
HelloWorldBasic.rsc 
HelloWorldBasic.aif

HelloWorldBasic.app 是一个应用程序,本质上它是一个包含了应用程序逻辑的DLL。HelloWorldBasic.rsc 是被便宜好的资源文件。HelloWorldBasic.aif 是一个应用程序信息文件。Aif文件的主要作用是在目标设备的菜单中显示图标。创建Aif文件你可以发使用Aif Builder 或者直接使用命令行。

genaif 工具使用以下语法:

genaif UID3 AIFSPEC AI

UID3是一个唯一的值,它是由Symbian 分配的。AIFSPEC是一个描述文件,它有如下语法:

mbmfile=app.mbm
ELangEnglish=Application
ELangGerman=Applikation

原创粉丝点击