
全部展开
首先,在Resource.h中定义ID:
示例:
#defineIDB_BG 131
然后7a64e59b9ee7ad9431333337396231在rc文件中添加代码:
IDB_BGRCPNG“ res // background.png”
其中RCPNG是自定义资源类型的名称
然后,您需要ATL类CImage和以下方法:
///////////////////////////////////////////////// // ////////////////////////
///从资源文件加载图片
/// @参数[in] pImage图片指针

/// @参数[输入] nResID资源编号
/// @参数[输入] lpTyp资源类型
///////////////////////////////////////////////// // ////////////////////////
staticboolLoadImageFromResource(INCImage * pImage,
INUINTnResID加载png,
INLPCSTRlpTyp)
{
如果(pImage == NULL)返回false;
pImage->销毁();
//查找资源
HRSRChRsrc = :: FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(nResID),lpTyp);

如果(hRsrc == NULL)返回false;
//加载资源
HGLOBALhImgData = :: LoadResource(AfxGetResourceHandle(),hRsrc);
如果(hImgData == NULL)
{
:: FreeResource(hImgData);
returnfalse;
}
//锁定内存中的指定资源
LPVOIDlpVoid = :: LockResource(hImgData);
LPSTREAMpStream = NULL;

DWORDdwSize = :: SizeofResource(AfxGetResourceHandle(),hRsrc);
HGLOBALhNew = :: GlobalAlloc(GHND加载png,dwSize);
LPBYTElpByte =(LPBYTE):: GlobalLock(hNew);
:: memcpy(lpByte,lpVoid,dwSize);
//删除内存中的指定资源
:: GlobalUnlock(hNew);
//从指定的内存创建流对象
HRESULTht = :: CreateStreamOnHGlobal(hNew,TRUE和pStream);
如果(ht!= S_OK)
{
GlobalFree(hNew);

}
其他
{
//加载图片
pImage->加载(pStream);
GlobalFree(hNew);
}
//释放资源
:: FreeResource(hImgData);
returntrue;
}
补充: Microsoft基础类(英语: Microsoft Foundation Classes,简称MFC)是Microsoft Corporation提供的类库. 它以C ++类的形式封装Windows API,并包含一个应用程序框架以减少应用程序开发人员的工作量. 包括的类包括大量Windows句柄封装类以及许多Windows内置控件和组件封装类.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-183620-1.html
有朋友问