DragDetect何时以及如何有用?

时间:2011-02-09 21:06:27

标签: c++ mfc drag-and-drop

基本上我需要一些东西来确定用户是否在拖放动作的过程中确定何时抑制扩展多选树控件中CTreeCtrl标签编辑的热心默认行为。

当用户将鼠标移动到已定义的矩形之外且左键按下时,

CWnd::DragDetect返回true。我正在考虑在::OnMouseMove中使用this的返回值来确定是否正在进行拖动操作以启用或禁用某些GUI效果和操作。

听起来一切都很好,但是除了采用相同的鼠标点并简单地使用所选项目进行命中测试之外,这真的能完成任何事情吗?我已经不得不对掉落目标做一个命中测试,所以这似乎是一个完全不必要的方法。

谷歌没有提出使用这种方法的任何例子,所以SO也没有返回任何结果,所以我很好奇这是否是一个有用的方法,或者这不是预期用途。

以前有人用过吗?

1 个答案:

答案 0 :(得分:2)

目的是从DragDetect处理程序中调用WM_LBUTTONDOWN,以查看用户是否正在尝试从应用程序中拖动某些内容。如果它返回true,则这是拖动操作的开始;如果它是假的,那么不是。返回true后,您开始跟踪鼠标并进行命中测试以提供反馈(如果有的话);你至少应该改变光标。最后在WM_LBUTTONUP进行最终命中测试以查看放置目标是什么。