在MFC中,使用資源中的BMP是簡單的,但是若是使用其他的圖片資源,卻是不容易的.
以下為解決辦法.
首先,在Resource.h里面定義ID:
#define IDB_BG 131
然后在rc文件里面添加代碼:
IDB_BG RCPNG "res\\背景.png"
其中,RCPNG為自定義資源類型的名稱,當然,至于你需要如何去命名就是你的事情了.
然后我們需要CImage這個ATL類,以及以下這個方法:

/**///////////////////////////////////////////////////////////////////////////
/// 從資源文件中加載圖片
/// @param [in] pImage 圖片指針
/// @param [in] nResID 資源號
/// @param [in] lpTyp 資源類型
//////////////////////////////////////////////////////////////////////////
static bool LoadImageFromResource(IN CImage* pImage,
IN UINT nResID,
IN LPCSTR lpTyp)


{
if ( pImage == NULL) return false;

pImage->Destroy();

// 查找資源
HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
if (hRsrc == NULL) return false;

// 加載資源
HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
if (hImgData == NULL)

{
::FreeResource(hImgData);
return false;
}

// 鎖定內(nèi)存中的指定資源
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);

// 解除內(nèi)存中的指定資源
::GlobalUnlock(hNew);

// 從指定內(nèi)存創(chuàng)建流對象
HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);
if ( ht != S_OK )

{
GlobalFree(hNew);
}
else

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

GlobalFree(hNew);
}

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

return true;
}
在CImage類里面有一個方法CImage::
LoadFromResource,可是它實際上是調(diào)用到了LoadImage這個方法
,完全是沒用滴.
有了以上的代碼,然后就可以寫邏輯代碼了:
LoadImageFromResource(&m_ImaBg, IDB_BG, _T("RCPNG") );
參考資料:供CImage類顯示的半透明PNG文件處理方法 http://blog.sina.com.cn/s/blog_4070692f010003gy.html強大的CImage類 http://www.cnblogs.com/s5689412/articles/149329.html