本文共 664 字,大约阅读时间需要 2 分钟。
MSDN:
使用参考文章:
来源:http://www.cppblog.com/mythma/archive/2013/12/13/8384.html
问题:已知一块内存,知道里面是一张图片的数据,如何显示出来?
一种解决方法: CImage(MFC or ATL)提供了一个加载内存中Image的成员函数HRESULT CImage::Load(IStream* pStream)。如何把指定的内存转换为IStream接口就成了需要解决的问题。最后发现获取一个ISteam还真是曲折:):
void LoadMemImage( void * pMemData, long len) { HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len); void * pData = GlobalLock(hGlobal); memcpy(pData, pMemData, len); GlobalUnlock(hGlobal); IStream * pStream = NULL; if (CreateStreamOnHGlobal(hGlobal, TRUE, & pStream) == S_OK) { CImage image; if (SUCCEEDED(image.Load(pStream))) { // .. } pStream -> Release(); } GlobalFree(hGlobal); //这里似乎不需要释放。红色的TRUE表示Release会自动释放! } 转载地址:http://renws.baihongyu.com/