关于SHLoadDIBitmap的问题,老是显示不出来图片

liuyuw 2004-08-26 06:13:49
我想用这段代码显示图片,m_indexbg是CStatic,但为什么老是显示不出来呢?
m_indexbg.ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
CBitmap bitmap;
bitmap.Attach(SHLoadDIBitmap(_T("bottom.bmp")));
m_indexbg.SetBitmap(bitmap);
...全文
292 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjyun 2004-08-27
  • 打赏
  • 举报
回复
up
载舟之水 2004-08-26
  • 打赏
  • 举报
回复
CStatic的特点是

1.位图句柄必须保留至进程结束

2.第一次显示可能不成功(也许是bug)

根据以上特性,如果你把这段代码放在函数中或某局部位置的话

CBitmap bitmap
是局部变量,虽然SetBitmap(bitmap)成功了,但是局部过程结束后,bitmap变成了

NULL,窗口一刷新或被阻挡,位图就会消失。

所以你必须把CBitmap bitmap 作为全局的或静态的,同时你要确保你位图
SHLoadDIBitmap(_T("bottom.bmp"))); 函数成功获得了句柄。

如果你遇到的问题通过上述仍未解决,使用方法二,
两次加载就行了。
m_indexbg.SetBitmap(bitmap);
m_indexbg.SetBitmap(bitmap);

还忘了说了,你一定要确定你的Static式样和位图句柄正确无误,否则就是其他问题了。

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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