[C++ MFC] CListCtrl::EnsureVisible() Problem

sisela

Erfahrenes Mitglied
Hallo Leute,
Code:
if ( Bedingung zur Auswahl der richtigen Zeile)
{
  rCtrl.SetItemState(nItemCount, LVIS_SELECTED, LVIS_SELECTED);
  rCtrl.EnsureVisible(nItemCount, false);
}
Dieser Codeschnipsel macht mir Probleme! Ich habe sozusagen ein unendlich langes ListCtrl und möchte dort eine bestimmte Zeile markieren und auch sichtbar machen. Markieren funktioniert aber sichbar machen ist das Problem, denn trotz EnsureVisible wird die Liste weggescrollt und ich muss den Eintrag wieder von Hand suchen.
Ich dachte EnsureVisible sorgt dafür, dass das übergebene item immer sichtbar ist. Macht es aber nicht.

Hat jemand eine Idee?

danke schon mal!
 
Hi,

bin nun selber drauf gekommen! Wenn man etliche Zeilen in eine Liste einträgt und vor jedem Eintrag kontrolliert ob es sich um die zu markierende Zeile handelt und dann EnsureVisible() und ItemState setzt, wird zwar der Eintrag markiert und auch sichtbar gemacht allerdings verhindert das nicht, dass dieser Eintrag durch folgende Neueinträge weggescrollt wird. Man muss sich also das Item merken und erst wenn alle Einträge komplett in die Liste geschrieben worden sind, EnsureVisible und SetItemState aufrufen und siehe da, es funktioniert.

Also wollte nur antworten, falls auch jemand das Problem hat.
 
Zurück