verhindern, das Browser nach oben Scrollt?
-
Moinsen zusammen,
ich weis nicht ob meine Frage hier so richtig hinein passt - ich poste sonst eher ins BCB Forum, aber ich versuche es trotzdem einmal:
Ich nutze in meinem Programm die CppWebBrowser Komponente, um mir einen HTML-Stream anzeigen zu lassen. HTML-Stream deswegen, weil ich nicht einfach eine Site ansurfe, sondern die Komponente ausschließlig programmseitig mit HTML-Code füttere.
Das funktioniert sogar, immer wenn die Komponente einen neuen Strom erhält, akutualisiert sie die Seite. Leider scrollt sie diese dann auch gleich automatisch nach oben und das möchte ich verhindern.
Mit:
HWND hChildWnd = FindWindowEx(GetWindow(CppWebBrowser1->Handle, GW_CHILD) ,NULL,"Internet Explorer_Server",NULL); if (hChildWnd != NULL) { SendMessage(hChildWnd,WM_VSCROLL,SB_BOTTOM,0); } else { MessageBox(NULL ,"Child-Fenster nicht gefunden","FEHLER",MB_OK); }
kann ich Die Seite ganz nach unten scrollen. Dabei gibt es nur ein Problem: der Browser versucht von sich aus die Seite immer wieder nach oben zu scrollen und ich weis nicht genau wann er es versucht - dann könnte ich ja diesen Code direkt danach ausführen lassen und hoffen, das man kein flackern sieht.
Eleganter würde ich es aber finden, wenn der Browser garnicht erst versuchen würde nach oben zu scrollen. Hat jemand vielleicht ein Snippet um meinen Browser zu bändigen
Danke schonmal im Voraus und Spass Haben! :p
-
Ich hab zwar jetzt keine Ahnung von HTML-Streams, aber ist es vielleicht möglich diesen Stream einfach und zu schließen, beenden oder wie auch immer das heißt, sodass du einfach die neuen Ausgaben unten dranhängst?
Nur so ne Idee, weil wie gesagt, ich hab noch nir damit zu tun gehabt!Nochwas: Du könntest vielleicht auch per JavaScript beim Laden der Seite automatisch nach unten scrollen!
[ Dieser Beitrag wurde am 06.01.2003 um 20:24 Uhr von flenders editiert. ]
-
Das Problem ist einfach, das die Browserkomponente *immer* nach ganz oben scrollt, sobalt er sein "Bild" (also der Clientbereich - der durch den HTML-Code bestimmt wird) aktualisiert.
Das mit dem Java-Script würde vielleicht funktionieren, aber ich muss darauf achten, das der User eventuell Java-Script im Browser disabled hat.
-
Ich hätte gedacht, dass die Sicherheitseinstellungen des IE nicht direkt Einfluss auf die CppWebBrowser Komponente haben?!
Scrollt er wirklich nach jeder Ausgabe nach oben? Also wenn du z.B. erst<html>
<head><title>bla</title></head>
<body>
viel Text, sodass du nach unten scrollst! (HTML-Seite nicht beenden)ausgibst und später dann weiteren Text ausgibst, scrollt er nach oben?
-
Original erstellt von flenders:
**
Scrollt er wirklich nach jeder Ausgabe nach oben? Also wenn du z.B. erst<html>
<head><title>bla</title></head>
<body>
viel Text, sodass du nach unten scrollst! (HTML-Seite nicht beenden)ausgibst und später dann weiteren Text ausgibst, scrollt er nach oben?**
jupp - immer wenn du ihm ein Stückchen HTML gibst, aktualisiert er die Seite und scrollt nach oben. Irgendwie müsste man genau diesen Befehl zum scrollen abfangen und abblocken bzw. durch ein
SendMessage (hChildWnd,WM_VSCROLL,SB_BOTTOM,0);
ersetzten. Nur weis ich nicht wie
-
Falls du VC++ hast kannst du mal mit Spy++ nachschauen, ob und falls ja, was für eine Message gesendet wird!
-
WM_PAINT, 0, 0
aber das hilft mir auch nicht weiter