我需要将项目从一个TreeList拖放到另一个ThreeList,但只查找教程以在同一个TreeList中进行此操作。 anybony可以帮忙吗?我也很有意思如何将文件系统(窗口浏览器)中的文件或文件夹拖放到TreeList?我正在使用MFC C ++。谢谢!
答案 0 :(得分:2)
在没有省略所有MFC问题的强制性真实答案的情况下(“不使用MFC - 除非它是你居住的1997年”),OLE drag& drop会帮助你实现这两个目标。
虽然我目前没有MSVC方便,但这个例子看起来相当彻底......有移动,复制和滚动:
http://www.ucancode.net/CPP_Library_Control_Tool/OLE-DRAG-DROP-TREE-Control-CTreeCtrl-VC-Article.htm
您可以将其作为基础。但是,对于从Windows资源管理器中删除,请在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& amp;删除样本: