Hinzufügen eines Elements zu CListCtrl --> automatisch scrollen
-
Hi,
in einem Dialog füge ich über einen Button einem zum Dialog gehörenden CListCtrl Elemente hinzu. Ich möchte erreichen, dass nach dem Hinzufügen eines Elements automatisch zur "Endposition" des List-Controls gescrollt wird, damit das zuletzt (am Ende) eingefügte Element sichtbar wird.
Das habe ich folgendermaßen implementiert:m_ListControl.RedrawWindow(); int nScrollLimit = m_ListControl.GetScrollLimit(SB_HORZ); m_ListControl.Scroll(CSize(nScrollLimit,0)); m_ListControl.RedrawWindow();Das funktioniert auch wie gewünscht, allerdings sieht das zweifache RedrawWindow() nicht wirklich elegant aus.
Zur Erläuterung:
Lasse ich das erste RedrawWindow() weg, wird das Scroll-Limit falsch ermittelt und hinkt im Prinzip immer ein Element hinterher.
Lasse ich das zweite RedrawWindow() weg, wird die durch das Scrollen veränderte Ansicht natürlich nicht aktualisiert.Meine Frage: Gibt es eine elegantere Möglichkeit den gewünschten Effekt zu erzielen oder ist das doppelte RedrawWindow() vollkommen in Ordnung?
Danke schon mal im Voraus!
-
Die Kristallkugel für Softwareentwickler wurde noch nicht erfunden.
Was funktioniert nicht?
Welche Fehler?
-
Nicht gleich voreilig die Kristallkugel befragen

Nanuq schrieb:
Das funktioniert auch wie gewünscht, allerdings sieht das zweifache RedrawWindow() nicht wirklich elegant aus.
Es funktioniert wie gesagt. Ich wollte nur wissen ob das doppelte RedrawWindow() ok ist oder ob man das besser anders machen sollte.
-
ich wuerds ganz anders loesen
ListView_EnsureVisible(m_m_ListControl, ListView_GetItemCount(m_ListControl)-1, FALSE);und schon ist das unterste stehts sichtbar - feddich is
-
...genau das, wonach ich gesucht habe, besten Dank!Vielleicht sollte ich nächstes Mal die Methoden, die CListCtrl bereithält, etwas gründlicher durchforsten...
