Интерфейс 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, есть два варианта:
- Чтобы узнать обо всех операциях, выполняемых вызовом IFileOperation, используйте метод IFileOperation::Advise .
- Чтобы получать уведомления только о ходе выполнения определенных операций, передайте IFileOperationProgressSink в один или несколько отдельных методов IFileOperation :
Если вы решили передать IFileOperationProgressSink только для выбора методов, для них можно использовать один и тот же экземпляр IFileOperationProgressSink .
Примере
В следующем примере метод IFileOperationProgressSink передается экземпляру IFileOperation путем вызова метода Advise .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 |
Header | shobjidl_core.h (включая Shobjidl.h) |