0

我需要将项目从一个 TreeList 拖放到另一个 ThreeList,但只能找到在同一个 TreeList 中进行此操作的教程。任何人都可以帮忙吗?我也很有趣如何将文件或文件夹从文件系统(窗口资源管理器)拖放到 TreeList?我正在使用 MFC C++。谢谢!

4

1 回答 1

2

在不遗漏对所有 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 */
}

本文详细介绍了如何从古怪的DROPFILESOLE 结构中获取文件名列表:

http://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra


相比之下,如果您想查看设计得不太好的东西,请查看 Qt Drag & Drop 示例:

http://doc.qt.nokia.com/4.7-snapshot/dnd.html#examples

于 2012-09-12T14:29:49.143 回答