首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

加载RT_BITMAP时出错,高手来看看,什么有关问题

2012-12-17 
加载RT_BITMAP时出错,高手来看看,什么问题?BOOL CMy****Dlg::LoadResImage(UINT nResID,LPCTSTR ResType,I

加载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被版主删除
[解决办法]
没人顶怎么结贴啊

热点排行