Webbrowser Component NewWindow2 in MDI Anwendung
-
Mein Programm, das den MSIE verwendet ist eine MDI-Anwendung, es gibt MDI-Children mit der Webbrowser-Komponente. Die Steuerung/Navigation erfolgt aus dem MDI-Parent heraus auf das jeweilige MDI-Child.
Das funktioniert auch alles soweit ohne Probleme, bis auf eine Sache:
Es gibt einige Popup Fenster, die werden im Standalone Internet Explorer hinter dem Hauptfenster geöffnet (ein Beispiel ist das eBay Popup, welches momentan unter http://www.aol.de zusehen ist). Wird so ein Popup geladen, würde ich erwarten, daß das MDI-Child hinter allen anderen MDI-Children gezeichnet wird. Es ist aber leider so, daß die Hauptanwendung hinter alle anderen Windows Anwendungen gesetzt wird, sehr nervig.
Hier mein Code im NewWindow2 Event:void __fastcall TBrowserForm::CppWebBrowser1NewWindow2(TObject *Sender, LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel) { TBrowserForm *newBrowserWindow = new TBrowserForm(this); newBrowserWindow->BorderStyle = bsSizeToolWin; newBrowserWindow->CppWebBrowser1->RegisterAsBrowser = true; *ppDisp = newBrowserWindow->CppWebBrowser1->Application; newBrowserWindow->setMDIParent(mdiParent); newBrowserWindow->FormStyle = fsMDIChild; }
Die Variable mdiParent ist ein void* der mit der Methode
void TBrowserForm::setMDIParent(void* handle) { mdiParent = handle; }
im Hauptfenster (MDI-Parent) mit dem Aufruf
browser->setMDIParent(this->Handle);
gesetzt wird.
Sobald die Zeile mit *ppDisp ... ausgeführt wird, landet die Hauptanwendung im Hintergrund, und ich habe keine Methode gefunden, das zu verhindern und stattdessen das MDI-Child in den Hintergrund zu setzen, hat da jemand eine Idee?Ach, ich hab nochwas: Wenn man Popups mit *Cancel = true verhindert, kommt auf vielen Seiten eine Dialogbox mit der beliebten Javaskript Fehlermeldung ("Auf dieser Seitre ist ein Javaskript-Fehler aufgetreten ..."). Gibt es eine andere Möglichkeit als pauschal den Browser mit CppWebBrowser1->Silent = true stillzulegen, um dieses Fenster nicht zu bekommen, aber anderen Meldungen nicht zu unterdrücken?
Gruß und schönes Wochenende,
Marcus