我完成了一个小型演示来实现ole drag& drop。
我的应用程序看起来像这样:
将项目从TListView拖到系统资源管理器时可能会导致副本。我使用IDropSource,IDataObject和OLE
剪贴板格式CF_HDROP实现,所以我永远不需要将目标路径复制到我的
码
有没有办法让我知道目的地路径?
我需要一个解决方案,提前谢谢!
答案 0 :(得分:1)
很抱歉,但是无法找到目的地,也不需要知道它。 OLE拖放不会公开该信息。您提供源数据,目标决定如何处理它,然后告诉您结果是否是复制/移动/链接,以便您可以相应地清理源数据。
在这种情况下,您提供文件名作为源,Explorer会将文件复制到目标文件夹。想想如果将文件放入没有文件系统路径的虚拟文件夹中会发生什么。该文件仍可以复制(如果您在源数据中提供CFSTR_FILEDESCRIPTOR
和CFSTR_FILECONTENT
,则更是如此)。这是完全可以接受的OLE,以及为什么拖放是按照它的方式抽象的。