WEB开发网
开发学院手机开发Symbian 开发 Symbian 中文显示问题 阅读

Symbian 中文显示问题

 2010-06-22 02:54:00 来源:WEB开发网   
核心提示:fatal error C1057: 宏展开中遇到意外的文件结束错误,但只要在“人”字后面加个空格或''字符又可以通过了,Symbian 中文显示问题(3),,第三种方法一、定义一个新的文件,因为第三种方法实在是太慢了,在N6670真机上,命名为Common.h其中包含如下代码// 因为要使用CCnvC
fatal error C1057: 宏展开中遇到意外的文件结束

错误,但只要在“人”字后面加个空格或''字符又可以通过了,,

第三种方法

一、定义一个新的文件,命名为Common.h

其中包含如下代码

// 因为要使用CCnvCharacterSetConverter类,相应的lib文件和相同都是 charconv.lib

#include

void ConvertToUnicode(TDes& aTarget, const TDesC8& aSource)

{

CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::NewLC();

if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk, CEikonEnv::Static()->FsSession()) != CCnvCharacterSetConverter::EAvailable)

{

User::Leave(KErrNotSupported);

}

TInt state = CCnvCharacterSetConverter::KStateDefault;

converter->ConvertToUnicode (aTarget, aSource, state);

CleanupStack::PopAndDestroy();

}

二、在HelloWorldAppui.cpp中

1、增加一行 #include "Common.h"

2、将第一种方法中的HelloWorldAppui.cpp::HandleCommandL()中的相应代码改为如下代码:

_LIT8(KText8, "中国");

TBuf<10> BufTemp;

ConvertToUnicode(BufTemp, KText8);

CAknInformationNote* note = new (ELeave) CAknInformationNote;

note->ExecuteLD(BufTemp);

方法比较:

1、效率性:

第一种方法和第二种方法差不多,第三种方法效率明显低于前两种,主要表现在执行ConvertToUnicode(BufTemp, KText8);时

2、灵活性:

第一种应该是最麻烦的,主要表现在定义字符串常量时,需在rsst和loc两个文件中定义

第三种方法最方便,尤其是对动态变化的文字,可以随时定义,随时更改,比较灵活,

建议:

1、对于标准控件上需要显示的中文采用第一种方法,如菜单、对话框等上的文字,系统提供了定义标准控件时要用到的一系列结构体,如MENU、DIALOG等,

2、对于自定义控件需要显示的中文,不会或很少变化的中文采用第二种方法

3、对于动态变化的文字,采用第三种方法,但是能采用第二种的尽量采用第二种,因为第三种方法实在是太慢了,在N6670真机上,当执行ConvertToUnicode(BufTemp, KText8);9次时,差不多需要1秒时间

  原文:http://blog.csdn.net/miyunhong/archive/2010/06/20/5681378.aspx

上一页  1 2 3 

Tags:Symbian 显示

编辑录入:coldstar [复制链接] [打 印]
赞助商链接