大家帮忙看看这个程序为啥把PNG图像放进内存里再读
这是别人写的:
ImageFromIDResource(IDR_PNGNUM,"PNG",m_pImageNum); ImageFromIDResource(IDR_PNGBAK1,"PNG",m_pImageClock1); ImageFromIDResource(IDR_PNGBAK,"PNG",m_pImageClock); ImageFromIDResource(IDR_PNGHOUR,"PNG",m_pImageHHour); ImageFromIDResource(IDR_PNGMIN,"PNG",m_pImageHMinu); ImageFromIDResource(IDR_PNGSEC,"PNG",m_pImageHSec);
BOOL CGDIPClockDlg::ImageFromIDResource(UINT nID, LPCTSTR sTR,Image * &pImg){ HINSTANCE hInst = AfxGetResourceHandle(); HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); // type if (!hRsrc) return FALSE; // load resource into memory DWORD len = SizeofResource(hInst, hRsrc); BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc); if (!lpRsrc) return FALSE; // Allocate global memory on which to create stream HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len); BYTE* pmem = (BYTE*)GlobalLock(m_hMem); memcpy(pmem,lpRsrc,len); IStream* pstm; CreateStreamOnHGlobal(m_hMem,FALSE,&pstm); // load from stream pImg=Gdiplus::Image::FromStream(pstm); // free/release stuff GlobalUnlock(m_hMem); pstm->Release(); FreeResource(lpRsrc);}ImageFromIDResource(IDR_PNGNUM,"PNG",m_pImageNum); ImageFromIDResource(IDR_PNGBAK1,"PNG",m_pImageClock1); ImageFromIDResource(IDR_PNGBAK,"PNG",m_pImageClock); ImageFromIDResource(IDR_PNGHOUR,"PNG",m_pImageHHour); ImageFromIDResource(IDR_PNGMIN,"PNG",m_pImageHMinu); ImageFromIDResource(IDR_PNGSEC,"PNG",m_pImageHSec);
m_pImageNum=Image::FromFile(L"DigitNUM.png",0); m_pImageClock1=Image::FromFile(L"ClockBackchain1.png",0); m_pImageClock=Image::FromFile(L"ClockBackchain.png",0); m_pImageHHour=Image::FromFile(L"Clockhour.png",0); m_pImageHMinu=Image::FromFile(L"Clockmin.png",0); m_pImageHSec=Image::FromFile(L"Clocksec.png",0);