问题:已知一块内存,知道里面是一张图片的数据,如何显示出来?
一种解决方法:
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);
}
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/jacklam200/archive/2008/08/01/2753940.aspx