Symbian 显示中文资源

文章比较老,但有借鉴价值。

 

本文使用的模拟器为S60 2.1 Chinese版SDK附带的,此模拟器支持中文,其他英文版本的模拟器不在本文讨论范围之内。

1.  将中文字符串定义在单独头文件中,用记事本建立HelloWorldCh.h,文件中定义

#define str_ch "中文显示"

最重要的一点,很多文章都没有提过,就是需要将HelloWorldCh.h文件另存为UTF8编码,否则将不能正确显示中文。这样定义后,可能在编译时会针对HelloWouldCh.h出错。是因为记事本在建立UTF8编码文件的时候会在文件头三个字节插入16进制数等于EF BB BF的三个字节,导致在VC编译时出错,但用记事本打开时又不能看到,这时需要一个16进制编辑软件(如UltraEdit)将文件前三个字节删除。


2.  在资源文件HelloWorld.rss开头添加宏

CHARACTER_SET UTF8

说明使用UTF8编码,以支持中文。当然不能忘了将上面的头文件包含进来

#i nclude "HelloWorldCh.h" 

然后,在HelloWorld.rss中定义中文字符串为资源

RESOURCE TBUF r_str_ch   { buf = str_ch;}


3.  在需要使用中文字符串的地方将字符串从资源中提取出来

TName ch;
CEikonEnv::Static()->ReadResource(ch, R_STR_CH);
// 此处R_STR_CH必须为大写,具体原因下面说明

上述使用中文字符串资源的文件需要包含两个头文件

#i nclude <eikenv.h>
#i nclude <HelloWorld.rsg>

其中HelloWorld.rsg为编译过程中由HelloWorld.rss生成的中间文件,在HelloWorld.rsg中可以看到

#define R_STR_CH 0x********

因为VC是区别大小写的,所以上文中要使用R_STR_CH大写。

 

 

Symbian中显示中文资源所需要的步骤。

 

1. MyProject.mmp文件里添加

 LANG              01 31 

其中,01代表英文,31代表简体中文。

2. MyProject.rss中,添加

 #include "MyProject.loc"

MyProject.loc用来存放跟各种语言相关的资源。

3. 创建MyProject.loc文件,我通常的使用方式是将各种语言的资源分放在不同的文件中

 // English is the default language(sC) and 01
#ifdef LANGUAGE_01
#include "MyProject.l01"
#endif

// Chinese language resources follow
#ifdef LANGUAGE_31
#include "MyProject.l31"
#endif

其中,MyProject.l01存放英文资源,MyProject.l31存放简体中文资源

4. 创建MyProject.l01,将英文资源的定义放置其中

5. 创建MyProject.l31,在此文件开头加入

 CHARACTER_SET UTF8

然后定义中文资源,比如

 #define qtn_option_menu_commamd "命令"

MyProject.l31文件需要用Word采用UTF-8编码方式进行保存,此处一定要注意。

6. 修改MyProject。pkg,加入如下内容:

 ;Language - standard language definitions
&EN,ZH

;Standard SIS file header
#{"MyProject","MyProject"},(0x0FFAF737),1,0,0

;Supports Series 60 v 2.0
(0x101F7960), 0, 0, 0, {"Series60ProductID","Series60ProductID"}

;Files to be added here
"../../../epoc32/release/thumb/urel/MyProject/MyProject.APP"-"!:/system/apps/MyProject/MyProject.app"
{"MyProject.r01"
"MyProject.r31"}-"!:/system/apps/MyProject/MyProject.r31"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值