CppWebBrowser - neues Fenster selber erzeugen (NewWindow2 Event)



  • Moin zusammen!
    Generell habe ich kein Problem mit dem genannten Event des Webbrowser Controls, nur ein paar Seiten machen Probleme, wenn sie in einem Fenster angezeigt werden, daß direkt durch NewWindow2 selber geöffnet wurde. Folgendes Problem tritt auf:

    Mit folgendem Code wird im NewWindow2 Event ein neues Fenster (Popup) geöffnet und die zu ladende Seite übergeben:

    void __fastcall TFormBrowser::CppWebBrowser1NewWindow2(TObject *Sender,
          LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel)
    {
      TFormBrowser* newWindow = new TFormBrowser(this);
      *ppDisp = newWindow->CppWebBrowser1->Application;
      newWindow->Show();
    }
    

    Das funktioniert normalerweise auch ohne Probleme. Leider gibt es einige Popup-Seiten, bei denen der Hintergrund des Fensters grau bleibt. Auch wenn man in diesem Fenster dann weiter surfen will, bleiben sämtliche Seiten weiterhin grau, aber sie werden weiterhin geladen, alle Events wie DownloadBegin, BeforeNavigate usw. werden normal durchlaufen. Trotzdem bleibt die Seite grau.

    Eine Seite mit der man das reproduzieren kann (ich habe lange gesucht, bis ich ein zuverlässiges Beispiel gefunden habe) ist http://www.aol.de/instantmessenger/quickbuddy/index.jsp. Klickt man dort auf den Button "Starten", wird das Fenster geöffnet, die Seite auch geladen, aber der Inhalt bleibt grau. An der Seite selber kann das aber nicht liegen, lädt man die Popup-Seite http://www.aol.de/instantmessenger/quickbuddy/quickbuddy.jsp in das Hauptfenster, wo vorher die andere Url geladen wurde, klappt alles, die Seite wird korrekt dargestellt.
    Hat jemand irgendeine Idee, wie man dem Webbrowser-Control beigepuhlt bekommt, diese Seite auch korrekt anzuzeigen? Ich steh da wie der Ochs vorm Berg.

    Gruß,
    Marcus



  • Noch eine Ergänzung:

    Ich erzeuge in meinem Programm ein neues Fenster der selben Klasse, wie das aufrufende Fenster. Dem dort befindlichen Browsercontrol übergebe ich die zu ladende Webseite.
    Wenn ich jetzt mal zu Testzwecken auf meinem Fenster ein zweites Browsercontrol anlege, und diesem Control die Webseite übergebe, klappt alles.
    Was muß ich in dem Fall tun, wenn ein neues Fenster zum laden verwendet wird, was ich im Fall eines Controls im selben Fenster nicht tun muß?



  • Jaaaa, Problem gelöst:

    Man darf auf keinen Fall newWindow->Show() im NewWindow2 Event aufrufen. Stattdessen muß im BeforeNavigate2 Event ein this->Show() aufgerufen werden, dann geht alles. Ich kapiers zwar nicht, aber das soll mal egal sein, hauptsache geht.
    Ich hoffe, daß ich auch anderen damit helfen konnte.


Anmelden zum Antworten