再次提问没有得到回答的有关CBitmap类读取位图的问题? CBitmap类的LoadBitmap()方法通过文件名为什么无法读取位图?而非要通过资源号?MSDN中对LoadBitmap()方法的说明也是说可以通过文件名来读取的啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HBITMAP hbmp;hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(),"D:\\1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);CBitmap bmp;bmp.Attach(hbmp); 同意楼上的,从文件中载入图片,要使用LoadImage CBitmap::LoadBitmap()不能以文件形式打开,原因不知道,虽然提供了LPCTSTR lpszResourceName(主持人注:这个参数是DLL或EXE中的资源名,不是文件名),我给出了另外的方法,也是常用的。请看下面的代码: CBitmap bmp[3]; image=new CImageList(); image->Create(32,32,TRUE,1,1); HBITMAP hbmp;//位图句柄 hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(), "bitmap1.bmp",IMAGE_BITMAP,0,0, LR_LOADFROMFILE);//从文件bitmap1.bmp打开位图资源 bmp[0].Attach(hbmp);//绑定 image->Add(&bmp,color); hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(), "bitmap2.bmp",IMAGE_BITMAP,0,0, LR_LOADFROMFILE); bmp[1].Attach(hbmp); image->Add(&bmp2,color); hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(), "bitmap3.bmp",IMAGE_BITMAP,0,0, LR_LOADFROMFILE); bmp[2].Attach(hbmp); image->Add(&bmp3,color); m_list.SetImageList(image, LVSIL_NORMAL); 同意!最好用loadimage函数。我也遇到过这个情况 to lixiaosan(小三) :这个参数是DLL或EXE中的资源名,不是文件名那应该怎么用呢? 如果为DLL或EXE中的资源名,直接用LoadBitmap()就可以了。如果为资源ID,用MAKEINTRESOURCE(nResourceID)进行转换 对了,我觉得MFC在这点做的不好,每次我读图的时候都用我曾经写过的一个类,直接可以从文件中读取,类如下class CBitmapEx : public CBitmap {public: BOOL LoadBitmapImage(LPCTSTR szFilename); CBitmapEx(); virtual ~CBitmapEx();};CBitmapEx::CBitmapEx(){}CBitmapEx::~CBitmapEx(){}BOOL CBitmapEx::LoadBitmapImage(LPCTSTR szFilename){ ASSERT(szFilename); DeleteObject(); HBITMAP hbitmap=NULL; hbitmap=(HBITMAP)LoadImage(NULL,szFilename,IMAGE_BITMAP,0, 0,LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); return Attach(hbitmap);}以后就用它代替CBitmap了 另外我还有更多功能的CBitmap类,需要的话可以找我 多用户向服务器传送文件的问题 如何利用dx截屏 求一个设计方案`关于数据库的 用vb做的ocx控件,要放在一个浮动对话框上,实现向view里的拖放,并实现控件在view里的拖动,请大家说说实现的方法! 新人:寻找VC+AO代码实例 MFC对话框怎么鼠标没有反应了?谢谢。 如何判断是哪个线程出错? 白给分了!!! 一个关于ADO数据库的问题 这样做才能进行累加校正? 为什么函数gethostbyname(hostname)返回值总是NULL,是不是与我的局域网中IP地址为自动获取有关? 用ADO的RecordSet打开表,怎样判断表是否已经打开?
hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(),"D:\\1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CBitmap bmp;
bmp.Attach(hbmp);
CBitmap bmp[3];
image=new CImageList();
image->Create(32,32,TRUE,1,1);
HBITMAP hbmp;//位图句柄
hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
"bitmap1.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE);//从文件bitmap1.bmp打开位图资源
bmp[0].Attach(hbmp);//绑定
image->Add(&bmp,color);
hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
"bitmap2.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE);
bmp[1].Attach(hbmp);
image->Add(&bmp2,color);
hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
"bitmap3.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE);
bmp[2].Attach(hbmp);
image->Add(&bmp3,color);
m_list.SetImageList(image, LVSIL_NORMAL);
这个参数是DLL或EXE中的资源名,不是文件名
那应该怎么用呢?
如果为资源ID,用MAKEINTRESOURCE(nResourceID)进行转换
class CBitmapEx : public CBitmap
{
public:
BOOL LoadBitmapImage(LPCTSTR szFilename);
CBitmapEx();
virtual ~CBitmapEx();
};
CBitmapEx::CBitmapEx()
{}CBitmapEx::~CBitmapEx()
{}BOOL CBitmapEx::LoadBitmapImage(LPCTSTR szFilename)
{
ASSERT(szFilename);
DeleteObject();
HBITMAP hbitmap=NULL;
hbitmap=(HBITMAP)LoadImage(NULL,szFilename,IMAGE_BITMAP,0, 0,LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
return Attach(hbitmap);
}
以后就用它代替CBitmap了