加载RT_BITMAP时出错,高手来看看,什么问题?
BOOL CMy****Dlg::LoadResImage(UINT nResID,LPCTSTR ResType,Image * &image)
{
HINSTANCE hIns=AfxGetInstanceHandle();
HRSRC hRsrc = ::FindResource (hIns,MAKEINTRESOURCE(nResID),ResType); // 查找指定类型的资源,不支持RT_BITMAP格式
if (!hRsrc)
return FALSE;
// load resource into memory
DWORD len = SizeofResource(hIns, hRsrc);
BYTE* lpRsrc = (BYTE*)LoadResource(hIns, hRsrc); //将资源加入内存
if (!lpRsrc)
{
FreeResource(lpRsrc);//释放资源句柄
return FALSE;
}
// Allocate global memory on which to create stream
HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len); //分配内存
BYTE* pmem = (BYTE*)GlobalLock(m_hMem); //返回分配内存的指针
memcpy(pmem,lpRsrc,len); //拷贝资源
IStream* pstm;
HRESULT hRes=CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);
if (hRes!=S_OK)
{
GlobalUnlock(m_hMem); //锁计数减一
FreeResource(lpRsrc);//释放资源句柄
return FALSE;
}
// load from stream
image=Gdiplus::Image::FromStream(pstm); //将流对象中的数据读入Image对象
//m_image=new Image(pstm,FALSE);
//if(image->GetLastStatus())
//lpImage->FromStream(pstm);
// free/release stuff
pstm->Release(); //手动释放流对象
GlobalUnlock(m_hMem); //锁计数减一
FreeResource(lpRsrc);//释放资源句柄
return TRUE;
}
不知道为什么用这个函数加载RT_BITMAP格式的图片时,image里的nativeimage就会为NULL,status=invalidparam;加载其它格式的就行,我是用VS2008来调的
[解决办法]
该回复于2012-05-08 12:19:55被版主删除
[解决办法]
该回复于2012-05-09 21:05:53被版主删除
[解决办法]
没人顶怎么结贴啊