CTreeCtrl禁用特定节点上的拖放

时间:2016-04-28 03:51:13

标签: c++ mfc treecontrol

我有办法在CTreeCtrl的特定节点上禁用拖放吗?

我希望阻止将节点拖动到同一树中同一节点的子节点,并防止将节点拖动到链接到同一节点或其中一个节点的列表视图。

1 个答案:

答案 0 :(得分:1)

这取决于你如何处理鼠标移动处理程序中的放置目标。

您无法阻止TVN_BEGINDRAG功能。但是如果不应该拖动项目,则总是在鼠标移动处理程序中使用SetDropTarget(NULL),如果拖动停止则不执行任何操作。

当允许拖动项目时,您只需要检查目标是否被允许。您使用HitTest查找目标项目,您可以检查是否允许它放在此处。再次使用SetDropTarget。因此,用户可以看到允许的内容。

另一种方法是实现Ole Drag& Drop函数like in this sample here