CTreeCtrl, Items per Maus umsortieren?



  • Ich möchte die Items eines CTreeCtrl per Maus umsortieren können.

    Beim verschieben soll nicht nur das Parent-Item selektiert werden können, sondern auch eine schwarze Linie zwischen zwei Items.

    Soweit ich mich erinnere, habe ich so etwas schon gesehen!

    void CTreeCtrlSort::OnTvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
    
    	CPoint      ptAction;
    	UINT        nFlags;
    
    	GetCursorPos(&ptAction);
    	ScreenToClient(&ptAction);
    
    	m_bDragging = TRUE;
    	m_hitemDrag = HitTest(ptAction, &nFlags);
    	m_hitemDrop = NULL;
    
    	SetCapture();
    	*pResult = 0;
    }
    
    void CTreeCtrlSort::OnMouseMove(UINT nFlags, CPoint point)
    {
    	HTREEITEM           hitem;
    	UINT                flags;
    
    	if( m_bDragging){
    		if( ( hitem = HitTest(point, &flags)) != NULL){
    			SelectDropTarget(hitem);   //sel Ziel
    			m_hitemDrop = hitem;
    		}
    	}
    	CTreeCtrl::OnMouseMove(nFlags, point);
    }
    

    Jetzt müsste ich eine Lösung finden, mit der man zwischen zwei Items diese schwarze Linie zum einfügen setzen kann!



  • SetInsertMark - setzt die schwarze Linie zwischen zwei Items! 😃


Anmelden zum Antworten