CListBox: Performance bei AddString()
-
Hallo,
habe eine Problem, bei Nutzung von CListBox (MFC mit VS 6.0): Beim Hinzufügen sehr vieler Strings in einer Schleife dauert es ziemlich lange - unperformant.
Ich nehme an, dass ich immer implizit ein Update auf die Liste pro AddString()-Aufruf ausgeführt wird. Kann ich dies irgendwie steuern, dass das Update auf die ListBox erst nach dem Hinzufügen einiger Strings gemacht wird? Wenn ja, wie??
Danke.
-
Daten einem Control hinzufügen dauert nunmal etwas länger.
Du könntest auch nur die Daten anzeigen welche sichtbar sind.
Da du aber das ganze in einer Schleife machst hast du vermutlich folgendes Problem:
GUI reagiert nicht mehr bis die Schleife fertig ist.Schau mal in der FAQ unter Thread.
-
Ja, ein Update-GUI-Thread wäre eine zusätzliche Möglichkeit, aber ich dachte, dass es etwas gibt, um das automatische Listen-Update zu unterbrechen..
-
Kleine Beschleunigung bekommst mit SetRedraw(FALSE)
http://msdn2.microsoft.com/en-us/library/btaacw58(VS.80).aspxOder du verwendets die Listbox mit Ownerdraw, verwaltest die Daten selbst und verwendest kein LBS_HASSTRINGS. Das wird extrem schneller.
Alternativ: Verwende CListCtrl und dort evtl. den virtuellen Mode. Das geht weitaus schneller.