Referenz zu LVITEM unabhängig vom Index
-
Hi,
ich habe in meinem Programm ein CListCtrl welches gegebenenfalls mehrere Items enthält. Außerdem hab ich einen Vector der mit structs gefüllt ist. Jedes struct enthält die Daten eines einzelnen Eintrags des CListCtrl. In diesem struct würde ich jetzt gerne eine Referenz (Pointer oder ähnliches) auf das dementsprechende LVITEM im CListCtrl speichern, um so immer Zugriff darauf zu haben (unabhängig vom Index des Items).Hintergrund des ganzen ist, dass ich die Einträge über Threads stetig aktualisiere und ich während dessen auch Einträge löschen will oder sortieren, was ja dazu führt, dass sich der Index der Einträge ändert.
Hat jemand einen guten Ratschlag und wenn ja vielleicht direkt einen Beispielcode?
Danke schonmal.
-
Es ist unmögich an die internen Daten des CListCtrl zu kommen und deren Daten direkt zu manipulieren.
Warum verwendest Du kein virtuelles CListCtrl. Dann verwaltest Du doch die Daten selbst?
http://msdn2.microsoft.com/en-gb/library/ye4z8x58(VS.80).aspx
-
Danke für deine Antwort. Von einem virtuellen CListCtrl höre ich gerade zum ersten mal. Ich versteh den Unterschied zum normalen CListCtrl auch noch nicht unbedingt zu 100%. Mal davon abgesehen dass es items bis zu einem DWORD anstatt int unterstützt. Kannst du mir bitte an einem Beispiel zeigen, wie ich das realisieren kann, dass ich immer das richtige item anspreche? Wäre wirklich sehr hilfreich.
-
Ich verstehe Deine Frage nicht. Der entsprechende Code steht doch komplet in dem Link...
-
Außer LVN_GETDISPINFO musst/solltest du dann auch noch
LVN_ITEMCHANGED und LVN_ODSTATECHANGED messages handeln...
-
Muss er das wirklich?
-
Hab's jetzt mit Hilfe von lParam und GetItemData gelöst!
Trotzdem danke.
-
Martin Richter schrieb:
Muss er das wirklich?
Ich denke schon, wenn er nicht ständig Auswahl und/oder Focus verlieren möchte.
Zumindest habe ich keinen anderen Weg für mich gefunden.