004
31.08.2006, 18:08 Uhr
mmc20
puss in boots
|
sooo...
hab mal n'bissl rumgebastelt, aber zu nem ergebnis bin ich nicht gekommen hab versucht daraus nen stream zu machen und den dann mit Image::FromStream() zu laden
C++: |
void XImageView::SetPictureFromDB(CLongBinary &lbData) { if ( pImage ) delete pImage;
m.dZoom = 1.0; m.topLeft.x = 0; m.topLeft.y = 0;
IStream *pstm = NULL; HRESULT hr; Gdiplus::Status stat; hr = ::CreateStreamOnHGlobal( lbData.m_hData, FALSE, &pstm ); pImage = Gdiplus::Image::FromStream( pstm ); stat = pImage->GetLastStatus(); // pstm->Release(); }
|
hr liefert 0 stat liefert invalidParameter muss ich den stream noch öffnen oder so, irgend etwas fehlt da doch noch !
hab dann versucht mal ein tempfile zu schreiben, also den datentyp von CLongBinary auf CByteArray geändert ( und diverse kleine anpassungen ) und das ganze array mal mittels serialize in ein file geschrieben, und siehe da ! es geht auch nicht ! naja, das file wird geschrieben, der inhalt stimmt auch fast mit dem orginal überein. da hängt noch was vorne und hinten an den daten, muss was mit OLE zu tun haben, da steht quasi der name und der pfad der .tif drin (also der als es in die datenbank geschrieben wurde)... wie bekomme ich das weg? hat das ne feste länge, oder gibts da nen header zu? Dieser Post wurde am 31.08.2006 um 18:09 Uhr von mmc20 editiert. |