3.1 项目目录
Symbian项目中有很多目录(不知道为什么要这样存放文件,不符合一般C++ 程序的目 录划分方法)。
aif 图标目录,存放程序图标
data 资源目录,存放程序资源文件
Group Symbian项目目录,存放用于编译ARMI程序的mmp文 件
Help 帮助文件目录,存放帮助文件
Inc 头文件目录,存放头文件
Src 源文件目录,存放源文件
sis 打包目录,存放SIS打包文件
3.2 文件类型
Symbian工程中除了C++ 默认的文件类型(.cpp .h) 外,还有Symbian自定义的文件格式。
HRH文件,定义文件。定义ID、命令等枚举变量
RSS文件,资源文件。一般存放在data目录下,定义程序中的对话框、控件、字符串等资 源。在Carbide.c++ 中也被保存为RSSI扩展名。
LOC文件,语言文件。为资源中定义的字符串赋值。存放在dada目录下,与资源文件相对 应。根据不同的语言编码可以保存为L01(英文)、L31(中文)等扩展名。
MMP文件,VS.net编译Symbian程序必须的文件。VS.net会 根据设置自动更新该文件。
MBM文件,Symbian位图文件。AIF文件,Symbian图 标文件
PKG文件,Symbian打包定义文件,VS.net会根据设 置自动更新该文件。
3.3 Symbian 程序结构
Symbian程序主要为,每个程序有一个UI,UI可以有多个View(视 图),每个View都有自己的Container(容器),每个容器上面可以包含各种控件。
3.3.1 程序UI类
Symbian程序初始化时先初始化程序的UI,这时调用UI类 的ConstructL 函数。
由ConstructL来进行视图(View)的初始化。
DrawL函数用来进行绘图。
HandleCommandL函数处理命令。菜单命令、按钮命令等。
HandleKeyEventL响应按键事件
3.3.2 视图类
每个程序可以包含多个视图,通过视图间的切换来显示不同的页面。视图切换调用ActivateLocalViewL函 数。
视图在被激活时创建自己的容器,容器的初始化在DoActivateL函数中进行。
DoDeactivate当激活其它视图时调用,销毁容器。
3.3.3 容器类
容器是在相应的视图被激活时才被创建的。创建后通过调用ConstructL函数来初始化容器中的控件。如果使用Carbide.c++ 的UI Designer 生产视图的,控件的初始化操作被放在InitializeControlsL函 数里面,LayoutControls里面绘制控件位置。
OfferKeyEventL函数处理按键操作。
3.4 开发中常见的问题
3.4.1 中文字符
Symbian中对中文字符的处理是比较麻烦的,需要通过语言文件或在程序中进行动态编码转换来实现。
要在语言文件中使用中文需要将文件保存为UTF8编码格式,并在语言文件开头声明CHARACTER_SET UTF8。
尽量避免在程序源代码中直接使用中文,如果需要使用中文可以在资源文件中如下定义
RESOURCE TBUF r_buf_chinese
{
buf = STR_BUF_CHINESE;
}
然后在语言文件中定义
#define STR_BUF_CHINESE "中文"
在程序源代码中使用
HBufC* text = StringLoader::LoadLC( R_BUF_CHINESE );
使用Carbide.c++ 的UI Designer设计中文程序需要把项目和语言文件的 默认编码全部改为UTF8。选中文件,右键菜单中选Properties
中文在视图中是无法正常显示的,但不会影响程序的编译。
注:程序启动或关闭UI 设计器再次打开编辑时里面的中文字符会变成乱码(如上图)。需要选择Refactor 菜 单的Undo 或直接使用快捷键Ctrl+Z 来恢复UI 设 计器中的中文字符,然后继续进行UI 设计。
3.4.2 帮助文件
使用Visual Studio .net 2003,在解决方案右键单击添加新项目,选New Symian OS Item。然后选择Context Sensitive Help,然后填写相关信息。
单击完成后会在项目中增加Help文件夹。
编辑帮助文件需要使用Word 2000,导入/Epoc32/cshlpcmp_template/目 录下的cshelp2000.dot模版进行编辑。系统中不能安装更新的Word版本否则编辑的rtf文 件将不能编译。
在程序中调用Help的方法可参考readme-cshelp.txt。
完成帮助文档并编译ARMI版后生成的SIS文件会有问题,帮助文件不存在(这是Symbian SDK的BUG)需要手动修改SIS目录下的PKG文 件将里面的HelloWord.cshlp更改为HelloWord.hlp,然后在命令提示符下 输入makesis.exe HelloWord.pkg(makesis.exe需要完整的路 径,如:D:/Symbian/7.0s/Series60_v21_C//epoc32/tools/makesis.exe)
3.4.3 程序图标
使用Visual Studio .net 2003编译的图标可能会出现颜色失真的问题,解决方法是在mmp文 件中将AIF行中的c8 改成c12(8位 色改为12位色)。