通过IStream输出图像信息
////////////////////////
//参数假设
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();