CImage从资源中加载图片文件
CImage直接加载图片文件倒是好办,直接用Load函数就可以,但是如何从工程资源中添加jpg、gif、png等图片呢?用下面这个函数
BOOL CDDCDlg::LoadImageFromResource(ATL::CImage*pImage, UINT nResID,LPCTSTR lpTyp)
{
if( pImage ==NULL)returnfalse;
pImage->Destroy();
// 查找资源
HRSRC hRsrc=::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
if(hRsrc ==NULL)returnfalse;
// 加载资源
HGLOBAL hImgData=::LoadResource(AfxGetResourceHandle(), hRsrc);
if(hImgData ==NULL)
{
::FreeResource(hImgData);
returnfalse;
}
// 锁定内存中的指定资源
LPVOID lpVoid =::LockResource(hImgData);
LPSTREAM pStream =NULL;
DWORD dwSize =::SizeofResource(AfxGetResourceHandle(), hRsrc);
HGLOBAL hNew =::GlobalAlloc(GHND, dwSize);
LPBYTE lpByte =(LPBYTE)::GlobalLock(hNew);
::memcpy(lpByte, lpVoid,dwSize);
// 解除内存中的指定资源
::GlobalUnlock(hNew);
// 从指定内存创建流对象
HRESULT ht=::CreateStreamOnHGlobal(hNew,TRUE,&pStream);
if( ht != S_OK )
{
GlobalFree(hNew);
}
else
{
// 加载图片
pImage->Load(pStream);
GlobalFree(hNew);
}
// 释放资源
::FreeResource(hImgData);
returntrue;
}
CImage从资源中加载图片文件
最新推荐文章于 2024-01-02 14:47:22 发布