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!