文章比较老,但有借鉴价值。
本文使用的模拟器为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 |
其中,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 ;Standard SIS file header ;Supports Series 60 v 2.0 ;Files to be added here |