如何显示一副mbm?

berserker0807 2008-09-20 03:39:56

大家好!
我是新手。要做一个显示mbm的程序。

symbian1.cpp:

在ConstructL 中,
{
......
iBitmap = new (ELeave) CFbsBitmap();
User::LeaveIfError(iBitmap->Load(KImagePath,EMbmImageImage1));
......
}

在Draw中
{
...........
CWindowGc& gc = SystemGc();
gc.BitBlt(TPoint(0,0),iBitmap);
............
}

iBitmap在头文件中定义,mbm文件已有。包含了.mbg,有了fbscli.lib。

可是一运行,程序一闪而过!经调试,问题应该是出在User::LeaveIfError(iBitmap->Load(KImagePath,EMbmImageImage1));


但是我看很多程序都是这样写的啊! 这么简单的两行程序,我都搞不定。。。。
还请大虾指教!小弟不胜感激了。
...全文
96 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
berserker0807 2008-09-24
  • 打赏
  • 举报
回复

anel:

果然如此!!太感谢你了!

上午还和师兄讨论的,我猜可能是要在container::Draw()中才可以,我这个框架只有一个cpp文件。没分什么container、view、appui。所以不行。

但是路径问题。毕竟是模拟器,要有Z:\\
anel 2008-09-24
  • 打赏
  • 举报
回复
try:
"z:\\system\\APPS\\symbian1\\image.mbm"
berserker0807 2008-09-24
  • 打赏
  • 举报
回复
在e32std.h中,-12对应的是const TInt KErrPathNotFound=(-12);

那我原来的路径是“//system//apps//symbian1//image.mbm”;
load 只能是绝对路径,那我就把kImagePath改成
“C:\\Symbian\\8.0a\\S60_2nd_FP2\\epoc32\\release\\wins\\udeb\\z\\system\\APPS\\symbian1\\image.mbm”

但这时候,错误变成了err=-28,const TInt KErrBadName=(-28);

看来路径名还是不对啊!

求教大哥了。
berserker0807 2008-09-24
  • 打赏
  • 举报
回复


在e32std.h中,-12对应的是const TInt KErrPathNotFound=(-12);

那我原来的路径是“//system//apps//symbian1//image.mbm”;
load 只能是绝对路径,那我就把kImagePath改成
“C:\\Symbian\\8.0a\\S60_2nd_FP2\\epoc32\\release\\wins\\udeb\\z\\system\\APPS\\symbian1\\image.mbm”

但这时候,错误变成了err=-28,const TInt KErrBadName=(-28);

看来路径名还是不对啊!
求教大哥们mbm到底在哪里啊!。。。
puddings 2008-09-24
  • 打赏
  • 举报
回复
berserker0807 2008-09-24
  • 打赏
  • 举报
回复


err是-12,但是,问题是,如何查到相应代码所对应的问题呢?
anel 2008-09-22
  • 打赏
  • 举报
回复
stonesl 2008-09-21
  • 打赏
  • 举报
回复
KImagePath路径的问题
puddings 2008-09-21
  • 打赏
  • 举报
回复
TInt err=iBitmap->Load(KImagePath,EMbmImageImage1);

看看err的值是多少
berserker0807 2008-09-21
  • 打赏
  • 举报
回复

应该不是路径的问题。
我又按照SDK中的例子,将

User::LeaveIfError(iBitmap->Load(KImagePath,EMbmImageImage1));

替换成了:

iBitmap = iEikonEnv->CreateBitmapL( KImagePath,EMbmImageImage1 );

就可以显示图片了!而且用User::LeaveIfError,运行会出错,情况是iBitmap里的
iFbs CXX0030 :错误:无法计算表达式的值
iAddressPointer、iRomPoiter也是 CXX0030 :错误:无法计算表达式的值。

还有,这两种表达方法有什么区别吗?

谢谢!
puddings 2008-09-20
  • 打赏
  • 举报
回复
可能文件的路径不对,检查KImagePath是不是正确的指向mbm文件了,如果路径没问题,调用
iBitmap->Load(KImagePath)试试。

3,120

社区成员

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

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