CListCtrl: Markierung aufheben

sebileiste

Grünschnabel
Wieder ich.
Ich suche in einer CListCtrl nach bestimmten Begriffen, falls der Begriff in der Liste steht, wird diese Zeile mittels:
Code:
	m_Tabelle.SetFocus();
	m_Tabelle.SetItemState(treffer, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
markiert! Soweit so gut.
Suche ich nun nach einem weiteren Wort, wird dieses ebenfalls markiert, jedoch werden die vorherigen Markierungen nicht aufgehoben und ich finde keinen Weg dies "manuell" zu tun. Also, wie hebe ich vorherige Selektionen wieder auf?

Gruß Sebastian
 

MCoder

Erfahrenes Mitglied
Standardmäßig ist beim "CListCtrl" Mehrfachauswahl eingestellt. Falls du das Control mit dem Dialog-Designer erzeugt hast, kannst du in den Eigenschaften die Einzelauswahl einstellen. Wenn die Liste mit "Create" erzeugt wurde, muss der Stil "LVS_SINGLESEL" ergänzt werden.

Gruß
MCoder
 

Endurion

Erfahrenes Mitglied
Alternativ kannst du auch einfach bei dem alten Item den Status LVIS_SELECTED entfernen:

Code:
m_Tabelle.SetItemState(treffer, 0, LVIS_SELECTED | LVIS_FOCUSED);

Hinten bei der Maske müssen beide an sein, vorne sagst du dann, dass die beiden Flags gelöscht werden sollen.