CppWebbrowser: Automatisch scrollen??



  • Hallo Forum,

    ich will mit dem cppwebbrowser eine datei laden (bereits implementiert) und diese dann durchblättern, und zwar nicht durch langsames scrollen, sondern durch richtiges blättern. Ich hab schon CppWebBrowser1->ScrollBy(0, 50); versucht, verschiebt sich nur der CppWebBrowser1. In dem Printpreview weiß ich nicht, wie ich blättere...

    Also hätte da wer ne Idee, nen Vorschlag, nen Link oder Code?? Wär sehr dankbar...

    MFG throni3

    Edit: Überschrift präzisiert



  • hi,

    SendMessage(CppWebBrowser1->Handle,WM_VSCROLL, SB_LINEDOWN,0);
    
    SendMessage(CppWebBrowser1->Handle,WM_VSCROLL, SB_LINEDOWN,0);
    

    Zum Blättern vielleicht:
    SB_PAGEDOWN
    SB_PAGEUP
    bezutzen
    siehe auch:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarmessages/wm_vscroll.asp

    POINT temp;
       SendMessage(CppWebBrowser1->Handle,EM_GETSCROLLPOS,0,(LPARAM)&temp); // aktuelle positon
       temp.y+=100; // 100 Pixel nach unten 
       SendMessage(CppWebBrowser1->Handle,EM_SETSCROLLPOS,0,(LPARAM)& temp); // neue position setzen
       SendMessage(CppWebBrowser1->Handle, WM_SETREDRAW, (WPARAM)TRUE, 0); // neu zeichnen
    

    siehe auch :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarfunctions/setscrollpos.asp

    PS: DIe COdebeispiele sind ungetestet, da ich zur Zeit kein BCB auf meinem Rechner habe.



  • danke für die tips, habs gleich mal versucht... hab auch noch n bissel gesucht und bin zu setscrollinfo gekomm. allerdings hat kein scrollversuch per button3 gefunzt...

    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    //CppWebBrowser1->ScrollBy(0, 50); //verrückt den browswer
    
       //SetScrollPos(CppWebBrowser1->Handle, SB_VERT, SB_LINEDOWN, true);
    
       //SendMessage(CppWebBrowser1->Handle,WM_VSCROLL, SB_LINEDOWN,0); //dein erster code
    
       SCROLLINFO MySInfo;//versuch per setscrollinfo
       MySInfo.cbSize = sizeof(SCROLLINFO);
       GetScrollInfo(CppWebBrowser1->Handle, SB_VERT, &MySInfo);
       MySInfo.nPage = 4;
       MySInfo.fMask = SIF_PAGE;
       SetScrollInfo(CppWebBrowser1->Handle, SB_VERT, &MySInfo, true);
    
    //SendMessage(CppWebBrowser1->Handle,SBM_SETPOS, SB_LINEDOWN,true);
      //SendMessage(CppWebBrowser1->Handle, WM_SETREDRAW, (WPARAM)TRUE, 0); // neu zeichnen
      //CppWebBrowser1->Update();
    
      /* POINT temp; //dein zweiter code
       SendMessage(CppWebBrowser1->Handle,EM_GETSCROLLPOS,0,(LPARAM)&temp); // aktuelle positon 
       temp.y+=100; // 100 Pixel nach unten 
       SendMessage(CppWebBrowser1->Handle,EM_SETSCROLLPOS,0,(LPARAM)& temp); // neue position setzen 
       SendMessage(CppWebBrowser1->Handle, WM_SETREDRAW, (WPARAM)TRUE, 0); // neu zeichnen
           */
    }
    

    ich hab bei jedem versuch den scrollbalken bisselrunter geschoben per maus, um zu sehen, ob er nach oben geht, wenn er schon nich nach unten geht...

    hättest du noch nen Tipp?? aber schon mal danke für die hilfe

    MFG throni3



  • Eigentlich ist es ein bisschen seltsam auf einen 6 Jahre alten Eintrag zu antworten, aber es wird immer auf diesen Eintrag verwiesen, obwohl er keine Lösung bietet.

    Auch wenn ihr den folgenden Quellcode ein bisschen seltsam finden werdet, er funkioniert.

    #include "Mshtml.h"
    
    void TForm_Help::ScrollVertical(int pScrollWidth)
    {
        IDispatch* Disp = CppWebBrowser_HelpFile->Document;
        IHTMLDocument2* Document = NULL;
        Disp->QueryInterface( IID_IHTMLDocument2, (void**)&Document );
        IHTMLWindow2 *Window = NULL;
        Document->get_parentWindow( &Window );
        Window->scrollBy( 0, pScrollWidth);
        Disp->Release();
    }
    

Anmelden zum Antworten