资源中加载Png

本文介绍了一个名为CPngFromResource的类,该类用于从Windows资源中加载PNG图像到IStream指针。通过构造函数指定资源ID,类内部会完成资源定位、加载和内存流创建的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class CPngFromResource
{
public:
CPngFromResource(UINT uIdRes)
{
m_Istream = NULL;
PngFromResource(uIdRes);
}
~CPngFromResource()
{
if(m_Istream)
m_Istream->Release();
}


operator IStream *()
{
return m_Istream;
}
private:
IStream *m_Istream;


IStream * PngFromResource(UINT uIdRes)
{
HRSRC hPngSrc = FindResource(AfxGetInstanceHandle(),MAKEINTRESOURCE(uIdRes),_T("PNG"));
if(hPngSrc)
{
HGLOBAL hPngGlobal = LoadResource(AfxGetInstanceHandle(),hPngSrc);
if(hPngGlobal)
{
LPVOID pSrc = LockResource(hPngGlobal);
if(pSrc)
{
ULARGE_INTEGER srcSize;  
srcSize.QuadPart = SizeofResource(AfxGetApp()->m_hInstance, hPngSrc);  
m_Istream = NULL;  
CreateStreamOnHGlobal(NULL, TRUE, &m_Istream);   
if(m_Istream)  
{  
m_Istream->SetSize(srcSize);  
DWORD cbWritten = 0;  
m_Istream->Write(pSrc, srcSize.LowPart, &cbWritten);
//VERIFY( m_Imagebg.Load(pStream) == S_OK );  
return m_Istream;
}  
}
}
}
return NULL;
}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值