CTreeCtrl 禁用拖放特定节点
CTreeCtrl disable drag and drop on specific nodes
我有办法在 CTreeCtrl 的特定节点上禁用拖放吗?
我想防止将节点拖动到同一棵树中同一节点的子节点,也防止将节点拖动到链接到同一节点或其子节点之一的列表视图。
这仅取决于您如何处理鼠标移动处理程序中的放置目标。
您无法阻止 TVN_BEGINDRAG
功能。但是如果项目根本不应该被拖动,你总是在鼠标移动处理程序中使用 SetDropTarget(NULL)
,如果拖动停止你什么都不做。
当item被允许拖动时,你只需要检查目标是否被允许。你使用HitTest
找到目标物品,你可以检查它是否允许在这里掉落。再次使用 SetDropTarget
。所以用户可以看到什么是允许的。
另一种方法是实现 Ole 拖放功能 like in this sample here。
我有办法在 CTreeCtrl 的特定节点上禁用拖放吗?
我想防止将节点拖动到同一棵树中同一节点的子节点,也防止将节点拖动到链接到同一节点或其子节点之一的列表视图。
这仅取决于您如何处理鼠标移动处理程序中的放置目标。
您无法阻止 TVN_BEGINDRAG
功能。但是如果项目根本不应该被拖动,你总是在鼠标移动处理程序中使用 SetDropTarget(NULL)
,如果拖动停止你什么都不做。
当item被允许拖动时,你只需要检查目标是否被允许。你使用HitTest
找到目标物品,你可以检查它是否允许在这里掉落。再次使用 SetDropTarget
。所以用户可以看到什么是允许的。
另一种方法是实现 Ole 拖放功能 like in this sample here。