CTreeCtrl, deselektiertes Item kann nachher nicht mehr selektiert werden

tt5

Grünschnabel
Hallo zusammen,

ich habe in meinem Programm einen Tree, an einer bestimmten Stelle möchte ich das selektierte Item, deselektieren. Ich benutze dazu:

ctrlTree.SetItemState (hItem, 0, TVIS_SELECTED);

das funktioniert auch wunderbar, wenn ich aber nachher ohne auf ein anderes Item zu klicken wieder auf das gerade deselektierte klicken will, wird es nicht selektiert. Wie kann ich das lösen?

Danke
 
Spontan würde ich mir das "alte Icon" merken und ein ON_CLICK auf dem Tree abfangen und das "aktive" Item wieder selektieren.
C++:
//in der Header-Datei:
HTREEITEM *m_hCurSel;

//in der cpp
//mittels dynamischer Membervariabel merken
m_hCurSel = new HTREEITEM;
m_hCurSel = m_tree.GetNextItem(TVI_ROOT, TVGN_CARET);

//in OnClick
//Icon wieder selecten und Pointer löschen
CTreeCtrl& ctrlTree = GetTreeCtrl();
ctrlTree.SetItemState (m_hCurSel, TVIS_SELECTED, TVIS_SELECTED);
delete m_hCurSel;

Oder ohne Speichern in einer Zwischenvariabel die Variante aus der MSDN nutzen.
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Antwort, bin aber selber auf eine andere Lösung gekommen. Ich bearbeite nicht die OnKlick, sondern nur die OnSelChange Meldung.
 
Zurück