Announcement

Collapse
No announcement yet.

OLE, Daten des Servers konvertieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OLE, Daten des Servers konvertieren

    Vielleicht kann mir mal einer Bestätigen, dass ich nicht auf dem Holzweg bin. Folgendes Problem: <p>Eine OLE Clientanwendung soll Daten von beliebigen Servern übernehmen. Dazu will ich einen TOLEContainer verwenden. Diese Daten sollen dann in der Clientanwendung auf eine Bitmap gerendert werden. Zielstellung ist, Zeichnungsdaten von beliebiegen Zeichen oder Malprogrammen zu übernehmen und als weiterbearbeitbare Bitmap verfügbar zu machen. <p>Wenn ich das IDataObject.EnumFormatEtc nehme und mir die Datenformate von Canvas 8 z.B. ansehe, dann kommen da so Sachen wie "CanvasDrawing" und andere Windows normalerweise unbekannte Bezeichnungen vor. Trotzdem wird das das Worddokument, das eine Canvas 8 Zeichnung eingebettet hat, korrekt auf einem Rechner ohne installiertem Canvas 8 dargestellt. Also müssten die Daten in einem Windows bekannten Format (EMF, Bitmap...??) vorliegen. Wie komme ich nun an diese Daten ran?

    Wie oben schon gesagt, Ziel soll es NICHT sein, diese Daten mit der entsprechenden Serveranwendung zu bearbeiten oder zu speichern (da die nicht auf allen Rechnern installiert ist), sondern diese Daten sollen mit einem Malprogramm überall bearbeitet werden können. Müssen also folglich in einem Format gespeichert werden, das so ziemlich jede Anwendung lesen kann. Also BMP.

    <p>Ich wollte nun ähnlich vorgehen wie in A.Koschs Com-Buch (1.Auflage) Beispiel Doc2RTF, also von IDataObject die unterstützen Übergabeformate durchsuchen nach solchen, die ich problemlos handeln kann (Metafile, EMF, Bitmap), die ja eigentlich auch jeder Server liefern können sollte. Dann die Daten aus dem Container übernehmen, auf eine entsprechend große Bitmap rendern und speichern. Was aber wenn GetClipboardFormatName alles mögliche aber nichts bekanntes meldet? Und wie löst Word das z.B.? Oder bin ich bei IDataObject völlig falsch??

  • #2
    Es geht glücklicherweise wesentlich einfacher. <p> IOLEObject stellt eine Funktion OleDraw zur verfügung, damit kann man auf einem DC zeichnen, die Größen der Zeichenobjekte erfährt man über die Funktion GetExtend des IObjectView2 interfaces. Damit hat man alles nötige, um den Inhalt des OLE Containers (das was er anzeigt) in eine Bitmap zu zeichnen und diese dann abzuspeichern

    Comment

    Working...
    X