symbian加载不了jpg

yeah2000 2009-01-04 04:54:32
void CSymbian5Container::ConstructL(const TRect& aRect)
{
CreateWindowL();

//获取系统时间
TBuf<60> strTime;
TTime tTime;
tTime.HomeTime();
TDateTime kk =tTime.DateTime();
strTime.Format(_L("%d%d%d %d:%d:%d"),kk.Year(),kk.Month(),kk.Day(),kk.Hour(),kk.Minute(),kk.Second());

//创建label用来显示时间
iLabel = new (ELeave) CEikLabel;
iLabel->SetContainerWindowL( *this );
iLabel->SetTextL(strTime);

//读取jpg
_LIT(KJPEGFile,"c:\\02.jpg");
_LIT(KJPEGType,"image/jpeg");

//创建文件服务器会话iRFs
RFs iRFs;
//连接到文件服务器
User::LeaveIfError(iRFs.Connect());
iRFs.Connect();
//创建图片解析器
CImageDecoder* iDec00 = CImageDecoder::FileNewL(iRFs,KJPEGFile);
// create the destination bitmap
iBkImageMask=new (ELeave) CFbsBitmap();
iBkImageMask->Create(iDec00->FrameInfo().iOverallSizeInPixels,iDec00->FrameInfo().iFrameDisplayMode);
//start conversion to bitmap
TRequestStatus iStatus = KErrNone;
iDec00->Convert(&iStatus, *(iBkImageMask));

//将imageDecoder/fsSession清除
delete iDec00;
iRFs.Close();

//设置容器大小
SetRect(aRect);
ActivateL();




图片已经拷贝到相应目录下,但是执行完构造函数就直接退出了。不知道咋回事,帮看看啊,大侠们
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
alex_hua 2009-01-04
  • 打赏
  • 举报
回复
补上:

假如你加载图片不是放在活动对象时,则使用同步解码操作~

CImageDecoder* iDec00 = CImageDecoder::FileNewL(iRFs,KJPEGFile,CImageDecoder::EOptionAlwaysThread);

...
...
TRequestStatus iStatus = KErrNone;
iDec00->Convert(&iStatus, *(iBkImageMask));
User::WaitForRequest(iStatus);

if(iStatus.Int() == KErrNone)
//success
else
//error
alex_hua 2009-01-04
  • 打赏
  • 举报
回复
使用异步方法时,
TRequestStatus iStatus = KErrNone;
iDec00->Convert(&iStatus, *(iBkImageMask));
则对象iDec00不能是局部变量,而应该是类成员。

同时,在很多场合使用文件时,不能直接操作根目录的文件,最好建个文件夹,如_LIT(KJPEGFile,"c:\\bmp\\02.jpg");
jlxtlinbercsu 2009-01-04
  • 打赏
  • 举报
回复
CImageDecoder加载图片是异步的,网上搜一下它的用法,并参考SDK.

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧