Ich stelle in einem CListCtrl mehrer Datensätze da... Problem ist wenn das zuviele Datensätze werden da dann irgendwann mal der Speicher dicht ist und windows das anmeckert... Das Object frisst dann also zuviel Speicher...
Hmm als Lösung hab ich mir gedacht ich baller die ganzen datensätze in ein stl-container und der Listctrl holt sich die immer wenn gerade gescrollt wird um die anzuzeigen... Wie müsste ich das umsetzen...Sieht die CListCtrl-Klasse irgendwie für dieses Problem was vor? Bin ja betimmt nicht der einzige der da mal zuviele Datensätze reingeballert hat oder? -- ...fleißig wie zwei Weißbrote
Also im Prinzip musst du nur abfangen wenn in der List Box gescrollt wird (WM_VSCROLL bzw. OnVScroll) und dann ermitteln wie weit gescrollt wurde. Danach leerst du die ListBox und füllst sie mit den entsprechenden Einträgen deines containers.
Hmm..da fällt mir ein wenn du nur ein paar Einträge in die Listbox machst, dann kann man ja gar nicht scrollen....du könntest aber immer einen Eintrag mehr wie da reinpasst reinstecken und dann immer wenn gescrollt wird die einträge eins weitersetzen...das ist aber glaube ich nicht so schön...
Wieso hast du da denn 65000 Einträge drin?!Dieser Post wurde am 01.04.2004 um 20:23 Uhr von Guybrush Threepwood editiert.
@Guybrusch jo da können weit über 100000 reinkommen... so wie du es vorschlägst ist genau die Lösung die ich nicht verwenden wollte... Es müsste doch ne Schnittstelle geben mit der man der Listcontrol nur einen buffer gibt (z.b. ein std::vector oder was weiss ich für einen) der dann entprechend angezeigt wird... Ich bin mir fast sicher das es sowas gibt die frage ist nur wie das geht... Hmm ich hab ja noch die Hoffnung das Tommix da ne Idee hat bevor ich mir dann doch die Lösung geben muss die auch Guybrush vorgeschlagen hat... -- ...fleißig wie zwei Weißbrote
aus dem c-plusplus.de forum hat mir einer einen link gepostet... Hatte ich doch richtig vermutet das es sowas schon geben muss...Die die es interessiert ist echt ein geiles CodeBeispiel mit bei -- ...fleißig wie zwei Weißbrote