BYTE-Array in IStream
-
Also ... ich bekomm Daten von meiner Server app... als BYTE-Array... soweit kein Problem ... doch es handelt sich bei dem Array um Bilddaten, d.h. will ich diese Daten in einen IStream packen und diesen dann an Gdiplus::Image::FromStream übergeben... doch ich bekomms nicht richtig hin, die Daten des Arrays in nen Stream zu packen
Hat da jemand nen Lösungsvorschlag? Was ich versucht hab hat net gaanz so geklappt .../* LoadImage: - lpbyData: Zeiger auf BYTE-Array der die Bild-Daten enthält. - dwLen: größe des Arrays */ bool dataPictureCtrl::LoadImage(LPCBYTE lpbyData, unsigned long dwLen) { // m_pImage ist ein Pointer auf ein Gdiplus::Image if (lpbyData == NULL) return false; if (m_pImage != NULL) { delete m_pImage; m_pImage = NULL; } LPVOID lpData = NULL; HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwLen); if (hGlobal == NULL) return false; lpData = GlobalLock(hGlobal); if (lpData == NULL) { GlobalUnlock(hGlobal); return false; } memcpy(lpData, lpbyData, dwLen); GlobalUnlock(hGlobal); LPSTREAM lpStream = NULL; if (FAILED(CreateStreamOnHGlobal(hGlobal, TRUE, &lpStream))) { if (lpStream != NULL) lpStream->Release(); return false; } if (lpStream == NULL) return false; m_pImage = Gdiplus::Image::FromStream(lpStream); if (m_pImage == NULL || m_pImage->GetLastStatus() != Gdiplus::Ok) { lpStream->Release(); return false; } lpStream->Release(); RedrawWindow(); return true; }
-
Sieht doch gut aus. Was klappt denn nicht?
Achte daruf, dass die Rückgabewerte (HRESULT) meistens wertvolle Infrmationen Infos geben.HRESULT hr; hr = Operation(); if (FAILED(hr)) ...Ist ein besserer Stil für die Fehlerkontrolle!
-
Hmm ok wenn das richtig wäre, müsste er das Bild ja anzeigen

Hmm das mit der Fehlerkontrolle werd ich machen ... die Funktion ist auch NOCH nicht fertig
Die Fehlerüberprüfung(durch verschiedene returns
) kommt imma bei mir am ende 
naja ... hmm k aber eigentlich müsste Invalidate(), RedrawWindow() oder InvalidateRect den ja eigentlich dazu bringen die WM_ERASEBACKGROUND nochmal aufzurufen... und dann würde GDI+ das ganze ja auch anzeigen... aber tuts nunmal nicht ... ich guck jetzt einfach mal was GetLastError meint ...