Hallo,
ich versuche aus einen OleContainer, der mit z.b. Photopaint oder Windows Image verbunden ist, den Containerinhalt als Bitmap auszulesen !
Leider erhalte ich immer nur "ungültige FORMATETC-Struktur" als Fehlermeldung ! Über das Clipboard wird das CF_BITMAP-Format unterstützt.
Was mache ich falsch ???
OleContainer1.OLEObjectInterface.QueryInterface(ID ataObject, aDataObject);
// IDataObject der Quelle ok ?
if aDataObject = nil then Abort;
// TFormatEtc-Struktur der zu holenden Daten initialisieren
with aFormatEtc do begin
cfFormat := CF_BITMAP;
ptd := nil;
dwAspect := DVASPECT_CONTENT;
lIndex := -1;
tymed := TYMED_GDI;
end;
// Daten über die IDataObject-Schnittstelle holen
OleCheck(aDataObject.GetData(aFormatEtc, aMedium));
// TBitmap-Instanz speichert in eine BMP-Datei
Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_B ITMAP, aMedium.hBitmap, 0);
ich versuche aus einen OleContainer, der mit z.b. Photopaint oder Windows Image verbunden ist, den Containerinhalt als Bitmap auszulesen !
Leider erhalte ich immer nur "ungültige FORMATETC-Struktur" als Fehlermeldung ! Über das Clipboard wird das CF_BITMAP-Format unterstützt.
Was mache ich falsch ???
OleContainer1.OLEObjectInterface.QueryInterface(ID ataObject, aDataObject);
// IDataObject der Quelle ok ?
if aDataObject = nil then Abort;
// TFormatEtc-Struktur der zu holenden Daten initialisieren
with aFormatEtc do begin
cfFormat := CF_BITMAP;
ptd := nil;
dwAspect := DVASPECT_CONTENT;
lIndex := -1;
tymed := TYMED_GDI;
end;
// Daten über die IDataObject-Schnittstelle holen
OleCheck(aDataObject.GetData(aFormatEtc, aMedium));
// TBitmap-Instanz speichert in eine BMP-Datei
Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_B ITMAP, aMedium.hBitmap, 0);
Comment