ITransferSource :: MoveItem移动没有内容的文件夹

时间:2012-06-27 13:44:04

标签: windows shell drag-and-drop explorer

我开发NSE。它有文件和文件夹。实现了具有接口ITransferSource的组件。在Drag& Drop(MOVE)方法期间,调用ITransferSource :: MoveItem()。 MOVE必须实现为COPY& DELETE,因此我返回文件的HRESULT_FROM_WIN32(ERROR_NOT_SAME_DEVICE)和E_NOINTERFACE。文件已成功移动,但文件夹不是。以下是资源管理器执行的调用序列:

  1. ITransferSource :: MoveItem() - 我返回E_NOINTERFACE
  2. ITransferSource :: OpenItem() - 我返回资源进行阅读 文件夹中。
  3. IShellItemResources :: GetSize() - 我为文件夹
  4. 返回0
  5. IShellItemResources :: GetAttributes() - 我返回FILE_ATTRIBUTE_DIRECTORY IShellFolder :: EnumObjects() - 资源管理器去了 进入文件夹和枚举儿童项目。对于每个项目,检查是否 item是文件夹。
  6. ITransferSource :: RemoveItem() - 文件夹已删除
  7. 如您所见,文件夹被复制和删除,但会跳过childer项目。资源管理器知道它们存在(通过EnumObjects),但不会复制它们。

0 个答案:

没有答案