IFileOperationProgressSink 接口 (shobjidl_core.h)

公开方法,这些方法提供丰富的通知系统, 供 IFileOperation 的调用方用来监视他们通过该接口执行的操作的详细信息。

继承

IFileOperationProgressSink 接口继承自 IUnknown 接口。 IFileOperationProgressSink 也有以下类型的成员:

方法

IFileOperationProgressSink 接口具有这些方法。

 
IFileOperationProgressSink::FinishOperations

在对 IFileOperation 的调用执行的最后一个操作完成后执行调用方实现的操作。
IFileOperationProgressSink::P auseTimer

不支持。 (IFileOperationProgressSink.PauseTimer)
IFileOperationProgressSink::P ostCopyItem

在每个项的复制过程完成后执行调用方实现的操作。
IFileOperationProgressSink::P ostDeleteItem

在每个项目的删除过程完成后执行调用方实现的操作。
IFileOperationProgressSink::P ostMoveItem

在每个项的移动过程完成后执行调用方实现的操作。
IFileOperationProgressSink::P ostNewItem

创建新项后,执行调用方实现的操作。
IFileOperationProgressSink::P ostRenameItem

在每个项的重命名过程完成后执行调用方实现的操作。
IFileOperationProgressSink::P reCopyItem

在每个项的复制过程开始之前执行调用方实现的操作。
IFileOperationProgressSink::P reDeleteItem

在每个项的删除过程开始之前,执行调用方实现的操作。
IFileOperationProgressSink::P reMoveItem

在每个项的移动过程开始之前执行调用方实现的操作。
IFileOperationProgressSink::P reNewItem

在创建新项的过程开始之前执行调用方实现的操作。
IFileOperationProgressSink::P reRenameItem

在每个项的重命名过程开始之前执行调用方实现的操作。
IFileOperationProgressSink::ResetTimer

不支持。 (IFileOperationProgressSink.ResetTimer)
IFileOperationProgressSink::ResumeTimer

不支持。 (IFileOperationProgressSink.ResumeTimer)
IFileOperationProgressSink::StartOperations

在执行任何特定文件操作之前,执行调用方实现的操作。
IFileOperationProgressSink::UpdateProgress

提供当前完成的工时总量相对于总工时量的估计值。

注解

何时实现

应用程序必须自行实现 IFileOperationProgressSink 。 Windows 不提供默认实现。

何时使用

IFileOperationProgressSink 本质上是特定事件的处理程序。 它们通常用于显示有关当时正在处理的特定操作的信息,例如文件的名称、源和目标以及目标项的新名称。 Post 方法接收操作的每个部分的 HRESULT,以便调用方可以确定进程失败(如果失败)的具体位置。 IFileOperation 方法参数值将传递给相应的 IFileOperationProgressSink 方法,以便它们有权访问相同的信息。

若要将 IFileOperationProgressSink 的实现附加到 对 IFileOperation 的调用,有两个选项:

如果调用 “建议 ”,则无需将 IFileOperationProgressSink 传递给特定的 IFileOperation 方法,因为这样会导致对 IFileOperationProgressSink 方法的冗余调用和重复通知。

如果选择仅传递 IFileOperationProgressSink 以选择方法,则 同一个 IFileOperationProgressSink 实例可用于所有这些方法。

示例

以下示例通过调用 Advise 方法将 IFileOperationProgressSink 传递到 IFileOperation 的实例。
IFileOperation *pfo;
CoCreateInstance(CLSID_FileOperation, NULL, CLSCTX_ALL, IID_IFileOperation, (void **)&m_pFO)
HRESULT hr = SHCreateFileOperation(hwnd, 0, IID_PPV_ARGS(&pfo));
if (SUCCEEDED(hr))
{
    // Advise to get notifications
    DWORD dwCookie;
    hr = pfo->Advise(SAFECAST(this, IFileOperationProgressSink*), &dwCookie);
}

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)

另请参阅

IFileOperation