Metafilehandle - Wie speichern?
-
Hallo!
In einer STGMEDIUM Struktur kann ich das Handle einer Metadatei mittels
STGMEDIUM::hMetafilePict ermitteln.Dumme Frage: Wie kann ich denn diese Metadatei nun in eine Datei speichern??
Im C++Builder würde ich die Datei in die Zwischenablage bekommen mit:
Clipboard()->SetAsHandle(CF_METAFILEPICT, pMeinSTGMEDIUM->hMetaFilePict);
(bitte jetzt nicht nach C++Builder verschieben, ich will keine Lösung für die VCL!)Aber das kann ja wohl nicht die Lösung sein, oder? Wie speicher ich denn dieses Metafile als Datei ab??
Und warum funktioniert das hier nicht?
CopyMetaFile(pMeinSTGMEDIUM->hMetaFilePict, "C:\\osterhase.wmf");Hat jemand Rat?
tschüss
Robert
-
rowisoft schrieb:
Und warum funktioniert das hier nicht?
CopyMetaFile(pMeinSTGMEDIUM->hMetaFilePict, "C:\\osterhase.wmf");Aus der Hilfe zu CopyMetaFile:
MSDN schrieb:
To get extended error information, call GetLastError.
Ich rate aber einfach mal ins Blaue hinein und sage, daß Du kein gültiges MetaFile an CopyMetaFile übergibst. Aufschluss könnte hier pMeinSTGMEDIUM->tymed geben.
Allerdings ist's wahrscheinlicher, daß Du keine Schreibrechte auf C:\ hast. Schliesslich verrichtet man seine tägliche Arbeit nicht als Admin.
Wie auch immer: Du hast uns mit viel zu wenig Information versorgt.
/EDIT:
Ich habe nicht genau hingeschaut. Also: Da es sich überhaupt gar nie nicht um ein HMETAFILE, sondern um ein ein HMETAFILEPICT dreht, kann das so nicht funktionieren. Probier es so:METAFILEPICT* pmfp = GlobalLock(pMeinSTGMEDIUM->hMetaFilePict); CopyMetaFile(pmfp->hMF, "C:\\osterhase.wmf"); GlobalUnlock(pMeinSTGMEDIUM->hMetaFilePict);
-
Hallo King!
Vielen, vielen Dank!
Jetzt funktionierts, glaube ich

Danke!
tschüss
Robert