wxTreeCtrl - Verschieben eines Astes
-
Hallo!
Ich möchte in einem wxTreeCtrl einen ganzen ast verschieben. dafür verwende ich folgende routine (das struct brauche ich für was anderes):
typedef struct sItemRepresentation { wxTreeItemId pTreeItem; } sItemRepresentation; void MoveTree(wxTreeItemId &source, wxTreeItemId &dest) { wxTreeItemIdValue cookie; wxTreeItemId cdest; // 1. Child wxTreeItemId child = WxTreeCtrl1->GetFirstChild(source, cookie); if (child.IsOk()) { // Add child to destination sItemRepresentation selItemRep = m_vItems[child]; selItemRep.pTreeItem = WxTreeCtrl1->InsertItem(dest,WxTreeCtrl1->GetItemText(selItemRep.pTreeItem)); m_vItems[selItemRep.pTreeItem] = selItemRep; MoveTree(child,selItemRep.pTreeItem); // Get next children while ((child = WxTreeCtrl1->GetNextChild(child, cookie)).IsOk()) { selItemRep = m_vItems[child]; wxMessageBox(WxTreeCtrl1->GetItemText(selItemRep.pTreeItem), _T("Error"),wxOK | wxICON_ERROR, this); selItemRep.pTreeItem = WxTreeCtrl1->InsertItem(dest,WxTreeCtrl1->GetItemText(selItemRep.pTreeItem)); m_vItems[selItemRep.pTreeItem] = selItemRep; MoveTree(child,selItemRep.pTreeItem); child = WxTreeCtrl1->GetNextChild(child, cookie); } } }
Grunsätzlich wird der ast kopiert. nur gehen immer wieder scheinbar zufällig items verloren.
Kann mir bitte jemand weiterhelfen?
danke