【发布时间】:2012-09-12 13:49:01
【问题描述】:
我需要将项目从一个 TreeList 拖放到另一个 ThreeList,但只能找到在同一个 TreeList 中进行此操作的教程。任何人都可以帮忙吗?我也很有趣如何将文件或文件夹从文件系统(窗口资源管理器)拖放到 TreeList?我正在使用 MFC C++。谢谢!
【问题讨论】:
我需要将项目从一个 TreeList 拖放到另一个 ThreeList,但只能找到在同一个 TreeList 中进行此操作的教程。任何人都可以帮忙吗?我也很有趣如何将文件或文件夹从文件系统(窗口资源管理器)拖放到 TreeList?我正在使用 MFC C++。谢谢!
【问题讨论】:
在不省略对所有 MFC 问题的强制性真实答案(即“不要使用 MFC — 除非你住的地方是 1997 年”),OLE 拖放将帮助您实现这两个目标。
虽然我目前手头没有 MSVC,但这个示例似乎相当彻底……带有移动、复制和滚动功能:
http://www.ucancode.net/CPP_Library_Control_Tool/OLE-DRAG-DROP-TREE-Control-CTreeCtrl-VC-Article.htm
您可以以此为基础。但是对于从 Windows-Explorer 中插入,请在您的 OnDragEnter() 和 OnDragOver() 方法中进行额外检查,以查看 CF_HDROP 数据是否可用:
if (pDataObject->IsDataAvailable(CF_HDROP)) {
/* Extract the DROPFILES data out of the pDataObject */
}
本文详细介绍了如何从古怪的DROPFILES OLE 结构中获取文件名列表:
http://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra
相比之下,如果你想看看设计得不是很糟糕的东西,请查看 Qt Drag & Drop 示例:
【讨论】: