Frage

Gibt es eine Möglichkeit, irgendwie eine WTL destop Anwendung einbetten in ATL ActiveX (dh Erweiterung)?

Was ich versuche zu erreichen, ist ein ActiveX-Steuerelement mit Office-Dateien-Viewer zu erstellen. Als Basis habe ich eine Desktop-Anwendung WTL (vor einiger Zeit geschrieben), der Anzeige von Dokumenten OOo v3 API verwendet.

  • Ich habe ein ActiveX-Projekt erstellt, verknüpft notwendig Libs und enthält.
  • Ich kann anrufen WTL und OO Api Methoden.
  • Einige Eigenschaften und Methoden hinzugefügt wurden zu erfüllen Anforderungen der Host-Anwendung.
  • My ActiveX richtig in das heißt gezeigt und Host-Anwendung

Und hier mein Glück (und Wissen?) Beendet.

Meine Kontrolle hat m_hWnd Eigenschaft, aber es wird immer auf 0 gesetzt; Ich habe ein wenig und fand gegoogelt, dass ich Eltern Hwnd mit

bekommen
this->m_spInPlaceSite->GetWindow()

, aber es ist auch nicht arbeiten. Jedes Mal, wenn ich möchte ein Fenster Laufzeit endet in IsWindow () -Methode (aus ATL lib genannt) erstellen, mit Eltern == null

So erstellen und zeigen OOo :: DocWindow Ich brauche HWND des übergeordneten Fenster.

Und hier geht die Frage:

Kann ich irgendwie eine WTL Window-basierte Anwendung in ActiveX dh Erweiterung?
einbetten Ist es möglich, ohne Umschreiben ganzen OOo Api-Wrapper?

War es hilfreich?

Lösung

Ja, Sie können.

Schritte mit VS-Assistent:

  1. Erstellen Sie ATL-Projekt
  2. Hinzufügen
  3. ATL-Steuerelement, basierend auf einem gewissen Kontrolle (Taste, zum Beispiel). In diesem Fall werden Sie Nachricht Karte mit einigen Handler haben.

Dann CContainedWindow Mitglied zu Ihrem eigenen Fenster ersetzen und das ist alles.

ATL-Beispiele , ich habe es nicht überprüfen, aber hoffe, es hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top