在切分窗口之间实现拖放(5)
//移动图象:
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);
}
好了,到此为止,我们已经做好了所有的工作,可以实现在不同的视之间的拖动操作了。
- 上一篇:理解VC工程
- 下一篇:VC编程中如何在视图区显示工具提示

