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


Anmelden zum Antworten