//通过com组件加载,可加载png、jpg
BOOL ImageFromIDResource(UINT nID, LPCTSTR sTR,Image * &pImg)
{
HRSRC hRsrc = ::FindResource (NULL,MAKEINTRESOURCE(nID),sTR); // type
if (!hRsrc)
return false;
if (sTR == RT_BITMAP)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
Bitmap BkImage(hInstance, MAKEINTRESOURCEW(nID));
RectF sourceRect(0.0f,0.0f,(REAL)(BkImage.GetWidth()),(REAL)(BkImage.GetHeight()));
pImg = BkImage.Clone(sourceRect, PixelFormatDontCare);
}
else//通过com组件加载
{
// load resource into memory
HGLOBAL hRes=::LoadResource(NULL,hRsrc);
if (!hRes!=NULL)
return FALSE;
LPVOID pTheImage=::LockResource(hRes);
if (pTheImage!=NULL)
{
DWORD dwTheImage=::SizeofResource(NULL,hRsrc);

本文介绍两种方法通过GDI+从资源中加载图片,包括通过COM组件加载png、jpg,以及非COM组件加载,特别指出非COM组件加载jpg可能会失败的问题。
最低0.47元/天 解锁文章
262

被折叠的 条评论
为什么被折叠?



