2012-02-01 102 views
0

Windows提供标准组件 - 进度对话框。它是在Windows XP中发明的。进度对话框可以通过使用接口IProgressDialog的CoCreateInstance调用来创建。 Windows Vista为进度对话框提供了另一个(新)UI。需要使用界面IOperationsProgressDialog创建进度对话框以获得新的UI。有一个组件(CLSID_ProgressDialog):它支持接口和UI。建议使用IOperationsProgressDialog接口。文件操作进度对话框

我开发了命名空间扩展。它支持拖动&下拉。我使用的情况下将数据从我的NSE转移:

  • 的IShellFolder :: GetUIObjectOf - > IDataObject的
  • 的IDataObject ::的GetData - >文件描述符,FILECONTENTS
  • FILECONTENTS - >的IStream
  • 的IStream ::阅读 - >要传输的数据

FILEDESCRIPTOR报告说我的NSE需要进度UI(FD_PROGRESSUI)。在复制文件时显示进度对话框。该进度对话框具有由IProgressDialog接口提供的UI。我需要资源管理器使用IOperationsProgressDialog的用户界面的进度对话框,但我不知道如何强制资源管理器做到这一点。我只提供IDataObject和IStream。 NSE是为Windows 7设计的,但进度对话框具有旧UI。在从NSE复制到资源管理器的过程中,如何获得新的进度对话框UI?

回答

0

您可以QueryInterface提供的对象是否也实现了IOperationsProgressDialog,但您应该准备好处理E_NOINTERFACE

+0

我报告选项FD_PROGRESSUI。这意味着我希望在数据传输过程中拥有进度对话框。我自己不创建进度对话框,资源管理器就是这样做的。我不控制转移过程,探险家做它。 Explorer按部分读取我的数据并更新进度对话框。我的NSE只是数据的来源。 – user1182231 2012-02-01 10:32:14