C++ 加载PNG资源图片


C++ 加载PNG资源图片:

 
  1. void LoadResImage(int nResID,Image * &lpImage)  
  2. {  
  3.     HMODULE hModule=AfxGetInstanceHandle();  
  4.     HRSRC hRsrc = ::FindResource (hModule,MAKEINTRESOURCE(nResID),_T("PNG")); // type    
  5.     if (!hRsrc)   
  6.         return;   
  7.     // load resource into memory    
  8.     DWORD len = SizeofResource(hModule, hRsrc);   
  9.     BYTE* lpRsrc = (BYTE*)LoadResource(hModule, hRsrc);   
  10.     if (!lpRsrc)   
  11.         return;   
  12.     // Allocate global memory on which to create stream    
  13.     HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);   
  14.     BYTE* pmem = (BYTE*)GlobalLock(m_hMem);   
  15.     memcpy(pmem,lpRsrc,len);   
  16.     IStream* pstm;   
  17.     CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);   
  18.     // load from stream    
  19.     lpImage=Gdiplus::Image::FromStream(pstm);   
  20.     // free/release stuff    
  21.     GlobalUnlock(m_hMem);   
  22.     pstm->Release();   
  23.     FreeResource(lpRsrc);  
  24. }  

相关内容