QQ登录

只需一步,快速开始

上位机MFC控件Treeview节点位置任意拖放源代码

[ 复制链接 ]

上位机MFC控件Treeview节点位置任意拖放源代码

上位机MFC控件Treeview节点位置任意拖放源代码
如上图,我们可以通过鼠标将CTreeview的节点任意拖放。
以调节其位置。
主要是在鼠标操作函数内实现。
比如鼠标放开函数

  1. void CDragView::OnLButtonUp(UINT nFlags, CPoint point)
  2. {
  3.         CTreeView::OnLButtonUp(nFlags, point);

  4.         if( m_bLDragging )
  5.         {
  6.                 CTreeCtrl& theTree = GetTreeCtrl();

  7.                 m_bLDragging = false;

  8.                 CImageList::DragLeave(this);
  9.                 CImageList::EndDrag();

  10.                 ReleaseCapture();

  11.                 delete m_pDragImage;

  12.                 theTree.SelectDropTarget(NULL);
  13.                 m_htiOldDrop = NULL;

  14.                 if( m_htiDrag == m_htiDrop )
  15.                         return;

  16.                 HTREEITEM htiParent = m_htiDrop;
  17.                 while( (htiParent = theTree.GetParentItem(htiParent)) != NULL )
  18.                 {
  19.                         if( htiParent == m_htiDrag ) return;
  20.                 }

  21.                 theTree.Expand( m_htiDrop, TVE_EXPAND );

  22.                 HTREEITEM htiNew = CopyBranch( m_htiDrag, m_htiDrop, TVI_LAST );
  23.                 theTree.DeleteItem(m_htiDrag);
  24.                 theTree.SelectItem( htiNew );

  25.                 if( m_idTimer )
  26.                 {
  27.                         KillTimer( m_idTimer );
  28.                         m_idTimer = 0;
  29.                 }
  30.         }
  31. }
复制代码
比如鼠标移动函数

  1. void CDragView::OnMouseMove(UINT nFlags, CPoint point)
  2. {
  3.         CTreeView::OnMouseMove(nFlags, point);

  4.         HTREEITEM hti;
  5.         UINT      flags;

  6.         if( m_bLDragging )
  7.         {
  8.                 CTreeCtrl& theTree = GetTreeCtrl();
  9.                 POINT pt = point;
  10.                 ClientToScreen( &pt );
  11.                 CImageList::DragMove(pt);
  12.                
  13.                 hti = theTree.HitTest(point,&flags);
  14.                 if( hti != NULL )
  15.                 {
  16.                         CImageList::DragShowNolock(FALSE);

  17.                         if( m_htiOldDrop == NULL )
  18.                                 m_htiOldDrop = theTree.GetDropHilightItem();

  19.                         theTree.SelectDropTarget(hti);
  20.                         
  21.                         m_htiDrop = hti;
  22.                         
  23.                         if( m_idTimer && hti == m_htiOldDrop )
  24.                         {
  25.                                 KillTimer( m_idTimer );
  26.                                 m_idTimer = 0;
  27.                         }
  28.                         
  29.                         if( !m_idTimer )
  30.                                 m_idTimer = SetTimer( 1000, 2000, NULL );

  31.                         CImageList::DragShowNolock(TRUE);
  32.                 }
  33.         }
  34. }
复制代码
更多函数可以下载例程查看。
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC控件Treeview节点位置任意拖放源代码.rar 
文件大小:38.44 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索