Fenster nicht dauerhaft updaten
-
Hallo zusammen,
ich habe eine CListControl, die mit einigen Daten aus einer Datenmbank gefüllt wird. Jetzt ist ihr Status während der Befüllung so, dass das Fenster Grau wird und der Scrollbalken sichbar immer kleiner wird.
Was muss ich einstellen, um sozusagen erst nach kompletter Befüllung dieser Liste die Anzeige wieder anzuschalten. Das heiß, erst Abschalten, im Hintergrund mit Daten füllen und dann neuen Stand mit einem Schlag anzeigen.
Geht das?
Viele Grüße,
Ranger
-
Eine Möglichkeit ist:
CListCtrl::SetRedraw(FALSE); // mit den Daten arbeiten: ... // irgendwann später im Code: CListCtrl::SetRedraw(TRUE);Und vielleicht auch mal noch das Setzen des erweiterten Styles LVS_EX_DOUBLEBUFFER sollte helfen !

-
Hallo,
Supi, das hat erstmal soweit geklappt. Die Anzeige gefällt mir so wesentlich besser.
Allerdings muss ich sagen, dass nur der erste Teil Deiner Hilfe funktioniert hat. In meinem Visual C++ 2003 gibt es
LVS_EX_DOUBLEBUFFERnicht. Kennt jemand die Bezeichnung hier oder wird das nicht mehr unterstützt?
Was würde durch diesen Extended Style anders werden?Danke soweit,
Ranger
-
Klar wird das noch unterstützt.
MSDN:
Paints via double-buffering, which reduces flicker...
Alle deine Daten werden zuerst in einen Buffer geschrieben und dann auf einen Schlag dargestellt. Das verhindert eben das Flickern (Flackern) deines ListCtrls.
Du musst über CListCtrl::SetExtendedStyle diesen Style setzen.
Weitere Infos: http://msdn.microsoft.com/en-us/library/c7ezbf7b(VS.80).aspxAber wenn jetzt schon mit der Anzeige zufrieden bist...
