一种解决方法:
CImage(MFC or ATL)提供了一个加载内存中Image的成员函数HRESULT CImage::Load(IStream* pStream)。如何把指定的内存转换为IStream接口就成了需要解决的问题。最后发现获取一个ISteam还真是曲折:):
void LoadMemImage(void * pMemData, long len)
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, len);
void * pData = GlobalLock(hGlobal);
memcpy_s(pData, len, pMemData, len);
GlobalUnlock(hGlobal);
IStream * pStream = NULL;
if (CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) == S_OK)
{
CImage image;
if (SUCCEEDED(image.Load(pStream)))
{<