1. 程式人生 > >MFC使用自定義資源載入PNG

MFC使用自定義資源載入PNG

{
    
if ( pImage == NULL) returnfalse;

    pImage
->Destroy();

    
// 查詢資源
    HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
    
if (hRsrc == NULL) returnfalse;

    
// 載入資源
    HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
    
if (hImgData == NULL)
    
{
        ::FreeResource(hImgData);
        
returnfalse;
    }


    
// 鎖定記憶體中的指定資源
    LPVOID lpVoid    = ::LockResource(hImgData);

    LPSTREAM pStream 
= NULL;
    DWORD dwSize    
= ::SizeofResource(AfxGetResourceHandle(), hRsrc);
    HGLOBAL hNew    
= ::GlobalAlloc(GHND, dwSize);
    LPBYTE lpByte    
= (LPBYTE)::GlobalLock(hNew);
    ::memcpy(lpByte, lpVoid, dwSize);

    
// 解除記憶體中的指定資源
    ::GlobalUnlock(hNew);

    
// 從指定記憶體建立流物件
    HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);
    
if ( ht != S_OK )
    
{
        GlobalFree(hNew);
    }

    
else
    
{
        
// 載入圖片
        pImage->Load(pStream);

        GlobalFree(hNew);
    }


    
// 釋放資源
    ::FreeResource(hImgData);

    
returntrue;
}