Symbian 中大段文本显示控件详解
2010-02-22 20:53:00 来源:WEB开发网在container中的使用
第一步:在container中定义一个成员
CTextDisplay *iTextDisplay;
第二步:在constructl中初始化
代码如下: //这里是为了方便直接从文件中读出一段文本
_LIT(KAbout,"C:\about.ini");
RFs fs = CEikonEnv::Static()->FsSession();
RFile fp;
TInt err = fp.Open(fs,KAbout,EFileRead);
if(err == 0)
{
TInt nFileSize = 0;
fp.Size(nFileSize);
HBufC8* fileInfo = HBufC8::NewLC(nFileSize);
TPtr8 file = fileInfo->Des();
fp.Read(file, nFileSize);
HBufC* fileInfo16 = HBufC::NewLC(file.Length());
TPtr16 ptr = fileInfo16->Des();
/*ptr.Copy(file);*/
ConvGbk2Uni(file, ptr);
iTextDisplay = CTextDisplay::NewL(aRect,this);
iTextDisplay->SetDisplayContent(fileInfo16->Des());
iTextDisplay->SetContainerWindowL(*this);
iTextDisplay->SetExtent(TPoint(0,0), TSize(240, 320));
CleanupStack::PopAndDestroy(2);
}
fp.Close();
在一段代码写在ActivateL函数之前,原因我就不说了。ConvGbk2Uni函数的代码我也贴出来。如下:
void ConvGbk2Uni(TDesC8& original, TDes& res) //这个函数不是我写的,从网上搜的
{
//RFs aFileServerSession = CEikonEnv::Static()->FsSession();
RFs aFileServerSession;
aFileServerSession.Connect();
// CleanupStack::Pop();
CCnvCharacterSetConverter* converter=CCnvCharacterSetConverter::NewLC();
if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,aFileServerSession)!=CCnvCharacterSetConverter::EAvailable)
User::Leave(KErrNotSupported);
TInt state=CCnvCharacterSetConverter::KStateDefault;
TPtrC8 str( original );
HBufC* iInfoText = HBufC::NewL( str.Length() );
TPtr16 ptr = iInfoText->Des();
更多精彩
赞助商链接