VC2008读取数据以流式传输GDI +

时间:2012-03-03 23:39:52

标签: c++ image visual-studio-2008 stream gdi+

将jpeg保存在磁盘中的代码:

fwrite( dataPosition, 1, BufferSize, hFileImage );

该代码工作正常。 但是当我尝试读取数据流时,出了点问题:

HGLOBAL hGlobal = GlobalAlloc(GMEM_FIXED, BufferSize);
CComPtr<IStream> spStream;
HRESULT hr = CreateStreamOnHGlobal(NULL, TRUE, &spStream);
ULONG pcbWritten;//don't understand what it is
spStream->Write(dataPosition, BufferSize, &pcbWritten);
pImage = new Image(spStream, FALSE);

之后,似乎流(和pImage)是空的。我不确定我做错了什么?

1 个答案:

答案 0 :(得分:0)

在您写入流后,您可能应该将IStream::Seek流添加到其开头,以便跟随Image构造函数可以读取数据,而不是立即到达流的末尾。

static const ULONGLONG g_nZero = 0;
HRESULT nSeekResult = pStream->Seek(reinterpret_cast<const LARGE_INTEGER&>(g_nZero),
  STREAM_SEEK_SET, NULL);