Image *pImg = NULL;
HGLOBAL hGlobal = NULL;
HRSRC hSource = NULL;
LPVOID lpVoid = NULL;
int nSize = 0;
hSource = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_BACK_PNG), "PNG"); //"PNG" respresent the resource name
if(hSource == NULL)
return pRtImg;
hGlobal = LoadResource(AfxGetResourceHandle(), hSource);
if(hGlobal == NULL)
{
FreeResource(hGlobal); return pRetImg;
}
lpVoid = LockResource(hGlobal);
if(lpVoid == NULL)
goto Exit;
nSize = (UINT)SizeofResource(AfxGetResourceHandle(), hSource);
HGLOBAL hGlobal2 = GlobalAlloc(GMEM_MOVEABLE, nSize);
if(hGlobal2 == NULL)
{
goto Exit;
}
void* pData = GlobalLock(hGlobal2);
memcpy(pData, (void *)hGlobal, nSize);
GlobalUnlock(hGlobal2);
IStream* pStream = NULL;
if(CreateStreamOnHGlobal(hGlobal2, TRUE, &pStream) == S_OK)
{
pRetImg = Image::FromStream(pStream, FALSE);
pStream->Release();
}
FreeResource(hGlobal2);
Exit:
UnlockResource(hGlobal); FreeResource(hGlobal);
return pRetImg;