////////////////////////

//参数假设

PBYTE pbImage 为指向图像的指针

int nSize 为图像大小

CWnd *pCWnd 为输出到界面的元素指针

/////////////////////////

IStream *pStream = NULL;

//创建IStream

if (FAILED(CreateStreamOnHGlobal(NULL, TRUE, &pStream)))
{
    return -1;
}

 

//把图像内容写入流对象

pStream->Write(pbImage, nSize, NULL);

 

//由于写入后IStream的数据读写位置从 0 移动到了 nSize ,如果要输出写入的内容,

//需要设置读写位置到相应的位置上,类似对文档的读写操作过程。这里的宏STREAM_SEEK_SET为0。

LARGE_INTEGER liTemp = { 0 };
pStream->Seek(liTemp, STREAM_SEEK_SET, NULL);

 

//用IStream创建一个Bitmap对象

Bitmap TempBmp(pStream);

 

//获取要输出的区域

Rect aRect;

pCWnd->GetClientRect((LPRECT)&aRect);

 

//使用GDI+的接口来输出图像

Graphics grf(pCWnd->GetSafeHwnd());

grf.DrawImage(&TempBmp, aRect);

 

//不要忘了释放IStream,因为是通过COM接口创建的IStream,需要使用对象的Release方法释放

pStream->Release();

相关文章: