CTreeCtrl 禁用特定节点上的拖放

CTreeCtrl disable drag and drop on specific nodes

本文关键字:拖放 节点 CTreeCtrl      更新时间:2023-10-16

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

我想防止将节点拖动到同一

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

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

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

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

另一种方法是实现 Ole Drag&Drop 函数,如此处的示例所示。