从资源中读取图片 GDI+

//从资源中读取图片 Image* GetImageFromResource(HINSTANCE ahInstance, LPCTSTR lpResType, DWORD nResourceID) { LPCTSTR pResourceName = MAKEINTRESOURCE(nResourceID); HMODULE hInstance = ahInstance; HRSRC hResource = FindResource(hInstance, pResourceName, lpResType); if(!hResource) { return NULL; } //取得资源大小 DWORD dwResourceSize = SizeofResource(hInstance, hResource); if(!dwResourceSize) { return NULL; } const void* pResourceData = LockResource(LoadResource(hInstance, hResource)); if(!pResourceData) { return NULL; } HGLOBAL hResourceBuffer = GlobalAlloc(GMEM_MOVEABLE, dwResourceSize); if(!hResourceBuffer) { GlobalFree(hResourceBuffer); return NULL; } void* pResourceBuffer = GlobalLock(hResourceBuffer); if(!pResourceBuffer) { GlobalUnlock(hResourceBuffer); GlobalFree(hResourceBuffer); return NULL; } //把资源拷贝到分配的内存中 CopyMemory(pResourceBuffer, pResourceData, dwResourceSize); IStream* pIStream = NULL; if(CreateStreamOnHGlobal(hResourceBuffer, FALSE, &pIStream)==S_OK) { Image *pImage = Gdiplus::Image::FromStream(pIStream); pIStream->Release(); GlobalUnlock(hResourceBuffer); GlobalFree(hResourceBuffer); return pImage; } return NULL; }

你可能感兴趣的:(image,null,GDI+)