一、 实现代码
void DrawImage(HDC hdc,RECT & rc,UINT nIDResource,CString lpType) { HINSTANCE hInst = AfxGetResourceHandle(); HRSRC hRsrc = ::FindResource(hInst, MAKEINTRESOURCE(nIDResource), lpType); if ( ! hRsrc) return ; // 资源大小 DWORD len = SizeofResource(hInst, hRsrc); // 转换图片资源为字节数组 BYTE * lpRsrc = (BYTE * )LoadResource(hInst, hRsrc); if ( ! lpRsrc) return ; IImagingFactory * pImgFactory = NULL; IImage * pImage = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED); if (SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IImagingFactory, ( void ** ) & pImgFactory))) { if (SUCCEEDED(pImgFactory -> CreateImageFromBuffer(lpRsrc,len,BufferDisposalFlagNone, & pImage))) { pImage -> Draw(hdc, & rc, NULL); pImage -> Release(); } pImgFactory -> Release(); } CoUninitialize(); // 释放资源 FreeResource(hRsrc); } 代码说明:
a). 关键部分为将LoadResource转换成BYTE*以及CreateImageFromBuffer方法。
本文转自博客园农民伯伯的博客,原文链接:,如需转载请自行联系原博主。