能不能向一个CBitmap对象中添加指定路径的图像?

gaochizhen33 2011-09-20 10:31:08
声明一个CBitmap类的对象,向对象中添加指定路径的图像,使用LoadBitmap会出错。
	
CBitmap objBitmap;
CString strBitTopoPath="C:\\topo_bit.bmp";
/*GetRightFilePath(strBitTopoPath);*/
if(0 != objBitmap.LoadBitmap(strBitTopoPath))
{
m_objTopoImageList.Create(64, 64, ILC_COLOR32, 7, 0 );
m_objTopoImageList.Add( &objBitmap, RGB(255,0,255) );
}

这样总是不能进入循环里边?改怎么办
...全文
119 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaochizhen33 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chinatcp 的回复:]
m_hObject 是句柄,代表具体的位图,所以要赋值给他,不能直接赋值给对象 bitmap。

可以查找一下 LoadImage 函数的功能 和参数介绍,

第一个参数是 装载图像模块的特例,可以设置为 NULL。
[/Quote]
还有个问题需要你帮助下,我在这发个链接,帮忙看下,要是没说清楚留言告诉下,我再详细说下。
http://topic.csdn.net/u/20110919/18/1df495ca-2126-4c71-a8a1-c63691a0c09b.html?14455
先把这个帖子结了
罗平 2011-09-20
  • 打赏
  • 举报
回复
m_hObject 是句柄,代表具体的位图,所以要赋值给他,不能直接赋值给对象 bitmap。

可以查找一下 LoadImage 函数的功能 和参数介绍,

第一个参数是 装载图像模块的特例,可以设置为 NULL。
gaochizhen33 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gaochizhen33 的回复:]
引用 7 楼 chinatcp 的回复:
hObject 代表这个对象的句柄,类似于窗口类的 this->m_hWnd。

怎么直接写bitmap=(HBITMAP)::LoadImage(NULL,L"c:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);这样不对
[/Quote]
AfxGetInstanceHandle()是啥意思啊 与NULL有啥区别啊
gaochizhen33 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chinatcp 的回复:]
hObject 代表这个对象的句柄,类似于窗口类的 this->m_hWnd。
[/Quote]
怎么直接写bitmap=(HBITMAP)::LoadImage(NULL,L"c:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);这样不对


罗平 2011-09-20
  • 打赏
  • 举报
回复
hObject 代表这个对象的句柄,类似于窗口类的 this->m_hWnd。
gaochizhen33 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chinatcp 的回复:]
CBitmap bitmap;

bitmap.m_hObject=(HBITMAP)::LoadImage(NULL,L"c:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
[/Quote]相比之下,我上面写的那个方法就很麻烦了。 你的方法有没有什么要注意的或是隐患么?
gaochizhen33 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chinatcp 的回复:]
CBitmap bitmap;

bitmap.m_hObject=(HBITMAP)::LoadImage(NULL,L"c:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
[/Quote]真是个牛人啊。。能不能讲讲m_hObject是什么意思啊?这就话有点不太明白
罗平 2011-09-20
  • 打赏
  • 举报
回复
CBitmap bitmap;

bitmap.m_hObject=(HBITMAP)::LoadImage(NULL,L"c:\\test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
gaochizhen33 2011-09-20
  • 打赏
  • 举报
回复
找到办法了 这个对象是不能直接从指定路径加载图像的。必须使用Attach函数进行句柄的附加。
这种情况很多的,比如为不同的客户公司提供支持,不同的公司需要不同的图像,如果每次都重新添加资源会很浪费时间,还是直接从文件夹中读取,换的时候只需要替换图片就行。
下面是修改代码
CBitmap objBitmap;
HBITMAP bitmap;
CString strBitTopoPath="res\\newico\\topo_bit.bmp";
GetRightFilePath(strBitTopoPath);
bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),strBitTopoPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
objBitmap.DeleteObject();
if(!objBitmap.Attach(bitmap))
{
MessageBox("导入背景图失败!","提示",MB_OK);
return;
}
ljn398431 2011-09-20
  • 打赏
  • 举报
回复
恩恩 还是添加到资源里吧
huaidan2012126 2011-09-20
  • 打赏
  • 举报
回复
个人认为最好添加到资源里,
坐等答案

15,980

社区成员

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

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