2010-12-02 6 views
1

Derzeit wxHTML verwenden, um eine Remote-Webseite in einer C++ - Windows-basierten wxWidgets-basierten Anwendung anzuzeigen.Wie bekomme ich Internet Explorer in einer wxWidgets-Anwendung?

Allerdings brauche ich erweiterte Funktionen wie rudimentäres CSS-Styling und JavaScript. Der einfachste Weg wäre, den Internet Explorer einzubetten. Es ist der Schlüssel, die .exe-Größe der Anwendung klein zu halten, also glaube ich nicht, dass wxWebConnect gut passt.

Wie kann ich das tun? Ich fand einige Verweise auf die Verwendung von ActiveX zum Einbetten von IE in eine wxWidget-Anwendung, aber ich kann keine Beispiele oder Dokumentation oder irgendetwas finden.

Update: Der Grund, warum es wxWidgets verwendet, ist historisch. Cross-Plattform-Probleme sind kein Problem, es sollte nur in Windows ausgeführt werden.

Antwort

2

Ich habe genau dies getan. Es ist ziemlich einfach. Im Wesentlichen hosten Sie das MSHTML-ActiveX-Steuerelement. Internet Explorer übernimmt diese Kontrolle und fügt Schaltflächen, einen Verlauf, neue Fensterfunktionen, Registerkarten usw. hinzu. Alle Rendering-, DOM- und JavaScript-Teile werden jedoch von der MSHTML-Komponente verarbeitet.

Die Komponente wxActiveX kümmert sich um die praktischen Teile des ActiveX-Hostings. wxIE ist anscheinend eine abgeleitete Klasse, die das wxActiveX-Widget mit dem MSHTML-Steuerelement kombiniert und ein bisschen Glanz hinzufügt. YMMV.

+1

Ist das der wxActiveX wie auf dieser Seite erwähnt? http://wiki.wxwidgets.org/WxActiveX Es scheint, als ob es verlassen ist? WxIE, ich habe davon gehört, aber wieder nicht in der Lage, etwas "Offizielles" in Bezug auf die Dokumentation zu finden oder was nicht. – stpe

+0

Scheint dasselbe zu sein, ja. Es kann "aufgegeben" werden, aber das hindert es nicht daran zu arbeiten.Beachten Sie jedoch, dass Sie bei jeder Version von IE überprüfen müssen, wie sich das Verhalten verhält - nicht die ActiveX-Seite, die stabil ist, aber die interne Rendering-Engine von IE unterliegt regelmäßigen Änderungen. – MSalters

3

Einer der Hauptgründe für die Verwendung von wxWidgets gegenüber bestimmten anderen Widget-Bibliotheken ist, dass wxWindows plattformübergreifend kompatibel ist. Das Einbetten von IE würde das zerstören.

Dies bedeutet, (a) es ist wahrscheinlich keine gute Idee (auch wenn Sie nicht für plattformübergreifend jetzt schreiben, können Sie Ihre Meinung in der Zukunft ändern), und (b) Sie werden nicht viele finden andere Leute tun es, so dass Tutorials und Beispiele schwer zu bekommen sind.

Mein Vorschlag wäre, einen plattformübergreifenden Browser anstelle von IE zu betrachten; Firefox scheint die offensichtliche Wahl zu sein.

Vor diesem Hintergrund habe ich eine schnelle Google für Dich und kam mit dieser, die wie es scheint eine Lösung für Sie sein: http://www.kirix.com/labs/wxwebconnect.html

Hoffnung, das hilft.

[EDIT] Natürlich, ein Firefox-basiertes Widget würde Ihnen viel bessere CSS/JS/HTML-Rendering als aktuelle Versionen von IE, so dass ein weiterer guter Grund ist, es stattdessen zu verwenden.

[EDIT] Diese Antwort noch einmal recherchieren, weil ich auf ein Webkit-Widget stolperte, das auch einen Blick wert sein könnte. Hier ist der Link, den ich gerade gefunden: http://wxwebkit.kosoftworks.com/
(Ich weiß, das nichts für die OP nicht ändert, aber es könnte für jemand anderen nützlich sein, die diese Seite findet)

+1

Cross-Plattform ist kein conern, es wird nur unter Windows laufen (die Verwendung von WxWidgets ist historisch). Deshalb gibt die Frage speziell den Internet Explorer an. – stpe

+1

@stefpet - fair genug. Ich halte immer noch an meinem Kommentar fest, dass Firefox viel besser rendern wird. Das allein würde mich überzeugen. ;) – Spudley