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

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

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//移动图象: GetApp()-cpDragImage-DragMove(pt); //获得被放置的窗口: GetApp()-cpDragImage-DragShowNolock(FALSE); GetApp()-cpDropWnd = WindowFromPoint(pt); GetApp()-cpDropWnd-ScreenToClient(p

  //移动图象:
  GetApp()->cpDragImage->DragMove(pt);

  //获得被放置的窗口:
  GetApp()->cpDragImage->DragShowNolock(FALSE);
  GetApp()->cpDropWnd = WindowFromPoint(pt);
  GetApp()->cpDropWnd->ScreenToClient(&pt);
  GetApp()->cpDragImage->DragShowNolock(TRUE);

  //获得树型控件:
  CTreeCtrl &cTree = GetTree()->GetTreeCtrl();

  cTree.SelectDropTarget(NULL);
 }

 CListView::OnMouseMove(nFlags, point);
}

void CMyListView::OnLButtonUp(UINT nFlags, CPoint point)
{
 //如果是正在被拖动的话:
 if( GetApp()->cDragging )
 {
  //结束拖动:
  GetApp()->cDragging = FALSE;
  GetApp()->cpDragImage->DragLeave(GetDesktopWindow());
  GetApp()->cpDragImage->EndDrag();

  //获得放置点的窗口:
  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);
}

CListView::OnLButtonUp(nFlags, point);
}

  好了,到此为止,我们已经做好了所有的工作,可以实现在不同的视之间的拖动操作了。

精彩图集

赞助商链接