我有办法在CTreeCtrl的特定节点上禁用拖放吗?
我希望阻止将节点拖动到同一树中同一节点的子节点,并防止将节点拖动到链接到同一节点或其中一个节点的列表视图。
答案 0 :(得分:1)
这取决于你如何处理鼠标移动处理程序中的放置目标。
您无法阻止TVN_BEGINDRAG
功能。但是如果不应该拖动项目,则总是在鼠标移动处理程序中使用SetDropTarget(NULL)
,如果拖动停止则不执行任何操作。
当允许拖动项目时,您只需要检查目标是否被允许。您使用HitTest
查找目标项目,您可以检查是否允许它放在此处。再次使用SetDropTarget
。因此,用户可以看到允许的内容。
另一种方法是实现Ole Drag& Drop函数like in this sample here。