龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

在切分窗口之间实现拖放(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//移动图象: GetApp()-cpDragImage-DragMove(pt); if ( (hitem = cTree.HitTest(point, flags)) != NULL ) { GetApp()-cpDragImage-DragShowNolock(FALSE); cTree.SelectDropTarget(hitem); GetApp()-cTreeItemD

  //移动图象:
  GetApp()->cpDragImage->DragMove(pt);
 
  if ( (hitem = cTree.HitTest(point, &flags)) != NULL )
  {
   GetApp()->cpDragImage->DragShowNolock(FALSE);
   cTree.SelectDropTarget(hitem);
   GetApp()->cTreeItemDrop = hitem;
   GetApp()->cpDragImage->DragShowNolock(TRUE);
  }
 }

 CTreeView::OnMouseMove(nFlags, point);
}

void CMyTreeView::OnLButtonUp(UINT nFlags, CPoint point)
{
 //获得指向树型控件的指针:
 CTreeCtrl &cTree = GetTreeCtrl();

 CTreeView::OnLButtonUp(nFlags, point);

 //I如果是正在被拖动的话:
 if ( GetApp()->cDragging )
 {
  //不再拖动了:
  GetApp()->cDragging = FALSE;
  GetApp()->cpDragImage->DragLeave(this);
  GetApp()->cpDragImage->EndDrag();
  delete GetApp()->cpDragImage;

  cTree.SelectDropTarget(NULL);

  //验证被拖动的图象已被放下:
  GetApp()->cDropPoint = point;
  ClientToScreen(&GetApp()->cDropPoint);
  GetApp()->cpDropWnd = WindowFromPoint(GetApp()->cDropPoint);

  //选择拖动目的资源的类型:
  if ( GetApp()->cpDragWnd->IsKindOf(RUNTIME_CLASS(CListView)) )
  {
   AfxMessageBox("source is list view", MB_OK);
  }
  else
   if ( GetApp()->cpDragWnd->IsKindOf(RUNTIME_CLASS(CTreeView)) )
   {
    AfxMessageBox("source is treeview", MB_OK);
   }
   else
    AfxMessageBox("source is something else", MB_OK);
 }
}

精彩图集

赞助商链接