Flimmern bei InvalidateRect



  • hallo,
    ich hab ein windowsfenster, in das ich text gezeichnet hab ( mit TextOut ).
    wenn ich jetzt im fenster scroll mit der Scrollbar dann flimmert mein text wenn ich ihn durch:

    InvalidateRect( Wnd, NULL, TRUE );
    UpdateWindow( Wnd );
    

    zum neuzeichnen veranlasse.
    Wenn ich bei InvalidateRect als 3. parameter FALSE schreibe flimmerts nicht mehr, dann wird aber leider auch der hintergrund nicht gelöscht.

    Weiss jemand wie ich mein fenster ohne dieses Flimmern neuzeichnen kann.
    Bei EDIT-Controls geht das ja auch dass die nicht flimmern wenn man auf dem scrollbutton draufbleibt und scrollt.



  • Hallo,
    nur so eine Idee:

    wenn man den 3. Parameter abhängig davon, ob die linke Maustaste gedrückt ist mit FALSE übergibt und beim loslassen einmal mit TRUE; Dann müstest Du Dir nur den Zusatnd der Maustaste über die Message WM_LBUTTONDOWN und WM_LBUTTONUP merken.

    Mit anderen Worten, solange der Bediener auf der Scrollbar steht wird ohne Hintergrund gezeichnet.

    [ Dieser Beitrag wurde am 17.11.2002 um 18:24 Uhr von Uli editiert. ]



  • Ganz einfach:
    BackBuffer



  • ok ich habs jetzt mal versucht mit backbuffer hinzubekommen so wie es im link von sarfuan steht. Scrollen klappt jetzt auch gut und ohne flimmern aber wenn ich die grösse meines fensters verändere flimmert es trotzdem das war noch nicht so als ich keinen backbuffer benutzt hab. Was hab ich da jetzt wieder falsch gemacht ?



  • Mussu WM_ERASEBKGND überschreiben und TRUE zurückgeben



  • wow danke, perfekt.



  • Original erstellt von RenéG:
    Mussu WM_ERASEBKGND überschreiben und TRUE zurückgeben

    Und warum geht das dann?



  • Weil dann der Hintergrund nicht mehr neu gezeichnet wird. Bzw. das neue Zeichnen des Hintergrunds unterdrückt wird und zwar immer, egal wann.


Anmelden zum Antworten