Image* LoadPNGFromStaticRes(HMODULE hModule, UINT nResId)
{
HRSRC hRes = FindResource(hModule, MAKEINTRESOURCE(nResId), TEXT("PNG"));
DWORD dwResSize = SizeofResource(hModule, hRes);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwResSize);
CopyMemory(GlobalLock(hGlobal), LockResource(LoadResource(hModule, hRes)), dwResSize);
IStream* pIStream;
CreateStreamOnHGlobal(hGlobal, FALSE, &pIStream);
Image* pImg = Image::FromStream(pIStream);
pIStream->Release();
GlobalUnlock(hGlobal);
GlobalFree(hGlobal);
return pImg;
}
返回的Image指针最后需要delete掉!

本文介绍了一种从静态资源中加载PNG图片的方法,通过使用Windows API函数如FindResource和SizeofResource来定位并读取资源,然后利用IStream创建流,并最终通过Image类将流转换为Image对象。
236





