WinCE Browser mit PIEDocView

Das WebBrowser-Control und WebView2 befähigen Win32 Anwendungen, eine Web-Ansicht ins eigene Programm zu holen.

Doch was war mit Windows CE?
Dort war der Pocket Internet Explorer am Start und auch dieser ist “modular” aufgebaut.


Das Internet vergisst und Nischenprodukte wie Windows CE sind schon fast gänzlich dem Online-Alzheimer zum Opfer gefallen.

Doch so wie das Standard-Windows seit Version 98 und NT 5 (2000) mit dem Internet Explorer (und dem SHDocVwCtl.WebBrowser ActiveX Browser Control) ausgeliefert wurde, so konnte man in ein Windows CE Image den Pocket Internet Explorer integrieren und darüber das Web besuchen.

Die Performance des Pocket-IE war katastrophal, weil die CE-Geräte grundsätzlich schwachbrüstig waren und mit Auflösungen von 320 x 240 Pixel auf den alten “Organizern” erst recht nicht mit üblichen Webseiten umgehen konnten.

Hatte man also keine für WinCE optimierte Webseite (ich frage mich, ob es solche überhaupt gab), quälte man sich mit Scrollbars herum, die mit dem Nachzeichnen der Seitenbruchstücke immer das System überlasteten.

Das Microsoft.PIEDocView Interface

Und trotzdem … auch hier gab es eine ActiveX-Komponente, mit der man eine Webansicht in die eigene Anwendung einbinden konnte.
Sie funktionierte identisch zu SHDocVwCtl und benutzte sogar die gleichen Interface GUIDs, nur ihr “Anfang” war etwas anders.

Das Geheimnis ist in den Windows-CE Beispielen versteckt, die man bei der Installation von Visual Studio 2005 mit “SmartDevices” (also WinCE) finden kann:

Während man im regulären Windows atl.dll lädt und dort die Funktionen
AtlAxWinInit(), AtlAxGetControl(), AtlAxGetHost() einsetzt, braucht man unter Windows CE die atlce300.dll Bibliothek, doch die Funktionsnamen und Signaturen sind identisch.

Und wenn wir dann ein Fenster mit der Klasse AtlAxWin erstellen, wird es unter Windows mit der Prog-ID SHDocVwCtl.WebBrowser gefüttert, doch Windows CE erfordert hier Microsoft.PIEDocView.

Aber das war es dann auch schon. Alles andere (Interfaces, Callbacks) verläuft identisch zum Standard Windows WebBrowser Control.
Es reichen also 2 #if WINCE Zeilen im Code für die Portierung eines Win32 WebBrowsers nach Windows CE. (OK, ein paar HWND-Flags existieren in CE auch nicht und brauchen Nachbearbeitung.)

Fazit

Ich konnte somit meine WebBrowser-Demo-UI mit wenigen Zeilen auf Windows CE portieren, was ich mir nie hätte träumen lassen.

Wäre ich heute wieder im Jahr 2007, als mir Windows CE zum ersten Mal unter die Nase gekommen ist, hätte ich jetzt “coole” Ideen für Webanwendungen auf Industrie-Terminals … was damals undenkbar war.

Naja … in einer anderen Zeitlinie hat das sicher geklappt.
Und ich freue mich eben, dass ich über 15 Jahre später dieses Geheimnis lüften konnte.

📧 📋 🐘 | 🔗 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!