
WinCE Browser mit PIEDocView
« | 14 Jul 2024 | »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.