在切分窗口之间实现拖放(3)
//移动图象:
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);
}
}
- 上一篇:理解VC工程
- 下一篇:VC编程中如何在视图区显示工具提示

