VC2008 Чтение данных в поток GDI + - PullRequest
0 голосов
/ 04 марта 2012

Код для сохранения 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 голосов
/ 04 марта 2012

После того как вы записали в поток, вам, возможно, следует IStream::Seek потока до его начала, чтобы следующий конструктор Image мог читать данные, а не сразу достигать конца потока.

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