我需要拖动&将项目从一个TreeList拖放到另一个ThreeList,但在同一个TreeList中只能找到制作该项目的教程。有人能帮上忙吗?我还感兴趣的是,如何将文件或文件夹从文件系统(窗口资源管理器)拖放到TreeList?我正在使用MFC C++。谢谢
在不省略所有MFC问题的强制性真实答案的情况下(即"除非是1997年,否则不要使用MFC"),OLE拖动&drop将帮助你实现这两个目标。
虽然我现在手头没有微软风投,但这个例子似乎相当彻底。。。具有移动、复制和滚动功能:
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&跌落样品:
http://doc.qt.nokia.com/4.7-snapshot/dnd.html#examples