gültige HTREEITEM in CTreeCtrl
-
Wenn ich einen Baum (CTreeCtrl) habe und irgendein Item mit CTreeCtrl::DeleteItem(HTREEITEM) lösche, wie kann ich dann feststellen welche HTREEITEM (die ich vorher in einer Liste gespeichert habe) noch in CTreeCtrl enthalten sind?
Ich habe keine Funktion z.B.
BOOL CTreeCtrl::HasItem(HTREEITEM hItem)
gefunden, die mir da weiterhelfen könnte und alle anderen bringen da auch nichts.
Wenn es da keine Lösung gibt muss ich einen Riesenumweg gehen. Scheinbar ist das Problem ja nicht so trivial, dass die MFC-Programmierer gemeint hätten man muss sowas implementieren.
Gruß,
eckalb
-
Du musst AFAIK the Baum durchlaufen und dann bekommst Du ja alle HTREEITEMs:
Siehe GetRootItem und GetChildItem/GetNextItem
-
Jochen Kalmbach schrieb:
Du musst AFAIK the Baum durchlaufen und dann bekommst Du ja alle HTREEITEMs:
Siehe GetRootItem und GetChildItem/GetNextItemDas ist der Riesenumweg den ich gemeint habe. Soweit wäre ich auch gekommen
Ich hatte nur gehofft, es würde noch einfacher gehen.
Gibt es dazu nicht irgendwas in der API?
Gruß,
eckalb
-
DIe API Funktion ist "TVM_GETNEXTITEM" und die hat auf kein "HasItem"...
-
Ich mach es glaub ich doch anders.
Das wird mir zu unübersichtlichEDIT: Klappt leider nicht so wie ich mir das vorgestellt hab
Gruß,
eckalb
-
Hmmm, ich muss es doch so machen, leider.
Sehe keine andere Möglichkeit.// Rekursive Funktion // // Prüft ob hItem in dem Zweig enthalten ist BOOL CMyFormView::HasItemRec(HTREEITEM hItem, HTREEITEM hNext) { while (hNext != NULL) { if (hNext == hItem) return TRUE; if (HasItemRec(hItem, m_tcTree.GetChildItem(hNext))) return TRUE; hNext = m_tcTree.GetNextItem(hNext, TVGN_NEXT); } return FALSE; } // Prüft ob hItem in m_tcTree enthalten BOOL CMyFormView::HasItem(HTREEITEM hItem) { return HasItemRec(hItem, m_tcTree.GetRootItem()); }
Ich habe es jetzt so probiert wie du vorgeschlagen hast.
Gruß,
eckalb
-
Ok ich hab jetzt meinen Fehler gefunden.
Danke für deine Hilfe.
Gruß,
eckalbP.S: Der Code oben funktioniert funktioniert jetzt auch
Ist verrückt, auf was für Probleme man beim Programmieren alles kommt!
Liegt hoffentlich nicht daran dass an meinem Ansatz was verkehrt ist.