?
問題:已知一塊內存,知道里面是一張圖片的數據,如何顯示出來?
一種解決方法:
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);
}

