CListCtrl merkt nicht, dass die Selektion weg ist
-
Hallo!
Ich habe ein CSortListCtrl (ist ja im Prinzip ein CListCtrl).
Dann habe ich diese Funktion:long CArtikelView::GetMarkierteZeile() { int n = m_lscArtikel.GetSelectionMark(); if (n == -1) { return -1; } return m_lscArtikel.GetItemData(n); }Wenn ich nun einen Eintrag hinzufüge oder lösche, dann ist die Markierung weg - aber nicht für diese Funktion.

Wo wäre nun eine schlaue Stelle, dem Control das beizubringen?Kennt jemand Workarounds?
Am besten wäre wohl ein Eingriff in das Control selbst, denn ich habe diese Situation etwa in 20 Views.
Danke für Ideen

-
warum icht beim hinzufügen/löschen die aktualisierung zu machen???
-
Return Value:
Returns the previous selection mark, or -1 if there is no previous selection mark.
An UpdateData() liegts also nicht

Dir wird wohl nichts anderes übrig bleiben als mit SetSelectionMark den index immer wieder auf -1 zu setzen. Am günstigsten wäre sicher ein Handler für Delete- und AddItem direkt in der Controlklasse.
-
Danke Connan, das habe ich gemacht.
Dann hatte ich noch einen Fehler und nun sieht es schon ganz gut aus.
-
Du bekommst die Nachricht LVN_DELETEITEM/LVN_INSERTITEM. Wenn Du alsonicht an allen Stellen nachsehen willst ob sich was ändert, kanst Du diese Notifications abfangen und dann entsprechend reagieren.
-
Ich habe jetzt in InsertItem, AddItem, DeleteItem und DeleteAllItems einfach das hier:
SetSelectionMark(-1);Und das funktioniert.

Schon praktisch, wenn man seine eigene Controlklasse hat.
