为何装载的位图文件显示不出来?急!!!!!!!

sujinzhao407 2005-07-08 03:36:13
我建了一个基于对话框的工程,并为该工程添加了一个菜单,在该菜单的弹出菜单下有两个子菜单位图1和位图2,我的目的是通过点击子菜单来显示相应的位图,故在每个子菜单的消息映射里调用函数自己写的函数OnRun(UINT nBitmapID,UINT nMenuID),OnRun()函数里也用了loadBitmap(nBitmapID)以装载位图,执行后无错误,但是点击子菜单时并不显示位图图象,请问各位高手是什么原因?
是不是要用个类似Invalidate()更新一下什么的?
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zry000 2005-07-08
  • 打赏
  • 举报
回复
这两天刚好做过类似的东西,看起来你好象是要用来显示资源中已经定义过ID的位图,下面是大致的例子:
//先定义两个DC,一个是显示设备的DC,一个适合显示设备兼容的内存DC;
CClientDC dc(this);//显示设备
CDC memDC;//内存DC
memDC.CreateCompatibleDC(&dc);//把内存DC设定为和显示设备兼容
CBitmap *poldbmp=NULL;//定义一个旧BMP指针用以恢复
poldbmp=memDC.SelectObject(&your_bmp);//把你的位图装入内存DC,并保留原指针
dc.BitBlt(//把内存DC的矩阵传送到显示设备,即显示位图,具体参数看msdn吧!
OFFSET_X,
OFFSET_Y,
bmWidth,
bmHeight,
&memDC,
0,
0,
SRCCOPY
);
memDC.SelectObject(poldbmp);//恢复内存指针,不要忘了
qrlvls 2005-07-08
  • 打赏
  • 举报
回复
LoadBitmap 只是加载后得到一个 HBITMAP 句柄而已,还没有进行绘制
你必须在 OnPaint 中将 HBITMAP 选入到 DC 中并使用 BitBlt 来绘制
becool3000 2005-07-08
  • 打赏
  • 举报
回复
你可以在OnPaint里面载入你自己想要的图
在你的子菜单上面添家 判断啊
简单的运用if()语句
开始的时候FALSE
点击就TRUE 载入
不就可以了吗
Glacier_ji 2005-07-08
  • 打赏
  • 举报
回复
个人观点:LoadBitmap只是装载入到了内存中,不是用来显示的

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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