Поделиться через


Интерфейс IProgressDialog (shlobj_core.h)

Предоставляет методы, предоставляющие приложениям параметры для отображения диалогового окна хода выполнения. Этот интерфейс экспортируется объектом диалогового окна хода выполнения (CLSID_ProgressDialog). Этот объект является универсальным способом показать пользователю, как выполняется операция. Обычно он используется при удалении, отправке, копировании, перемещении или скачивании большого количества файлов.

Наследование

Интерфейс IProgressDialog наследуется от интерфейса IUnknown . IProgressDialog также имеет следующие типы элементов:

Методы

Интерфейс IProgressDialog содержит следующие методы.

 
IProgressDialog::HasUserCancelled

Проверяет, отменил ли пользователь операцию.
IProgressDialog::SetAnimation

Указывает клип Audio-Video с чередованием (AVI), который выполняется в диалоговом окне.
IProgressDialog::SetCancelMsg

Задает сообщение, которое будет отображаться, если пользователь отменит операцию.
IProgressDialog::SetLine

Отображает сообщение в диалоговом окне хода выполнения.
IProgressDialog::SetProgress

Обновления диалоговое окно хода выполнения с текущим состоянием операции. (IProgressDialog.SetProgress)
IProgressDialog::SetProgress64

Обновления диалоговое окно хода выполнения с текущим состоянием операции. (IProgressDialog.SetProgress64)
IProgressDialog::SetTitle

Задает заголовок диалогового окна хода выполнения.
IProgressDialog::StartProgressDialog

Запускает диалоговое окно хода выполнения.
IProgressDialog::StopProgressDialog

Останавливает диалоговое окно хода выполнения и удаляет его с экрана.
IProgressDialog::Timer

Сбрасывает таймер диалогового окна хода выполнения до нуля.

Комментарии

Объект диалогового окна хода выполнения создает немодное диалоговое окно и позволяет клиенту задавать заголовок, анимацию, текстовые строки и индикатор выполнения. Затем объект обрабатывает обновление в фоновом потоке и позволяет пользователю отменить операцию. При необходимости он оценивает время, оставшееся до завершения операции, и отображает информацию в виде строки текста.

Приложения обычно не реализуют этот интерфейс. Он экспортируется объектом диалогового окна хода выполнения для использования приложениями.

Используйте этот интерфейс, когда приложению необходимо отобразить диалоговое окно хода выполнения. Чтобы инициализировать объект, выполните следующие действия:

  1. Создайте объект диалогового окна в процессе выполнения (CLSID_ProgressDialog) с помощью CoCreateInstance. Запросите указатель на интерфейс IProgressDialog (IID_IProgressDialog).
  2. Вызовите метод IProgressDialog::SetTitle , чтобы указать заголовок диалогового окна.
  3. Вызовите метод IProgressDialog::SetAnimation , чтобы указать клип AVI для воспроизведения во время выполнения операции.
  4. Вызовите метод IProgressDialog::SetCancelMsg , чтобы указать сообщение, которое будет отображаться, если пользователь отменит операцию.
Чтобы отобразить ход выполнения операции, выполните следующие действия.
  1. Вызовите IProgressDialog::StartProgressDialog , чтобы отобразить диалоговое окно.
  2. Назначьте числовое значение общему объему работы, которую будет выполнять операция. Используйте любое число, позволяющее легко определить ход выполнения операции. Например, присвойте этому значению значение 100, если вы хотите указать ход выполнения операции с точки зрения процента завершения.
  3. Вызовите метод IProgressDialog::Timer , чтобы сбросить таймер. Этот метод задает начальную точку, которую объект диалогового окна хода выполнения использует для оценки времени, оставшегося в операции. Если этот метод не вызывается, отправной точкой будет вызов StartProgressDialog.
  4. По мере выполнения операции периодически вызывайте IProgressDialog::SetProgress , чтобы обновить диалоговое окно о том, какая часть операции была завершена. Объект диалогового окна хода выполнения обновит индикатор выполнения и пересчитает его оценку оставшегося времени. Вы можете использовать любую удобную числовую меру хода выполнения. Однако если вы хотите использовать значения, превышающие 4 гигабайта (ГБ), необходимо вызвать IProgressDialog::SetProgress64 вместо IProgressDialog::SetProgress.
  5. Приложение не получает уведомления, если пользователь нажимает кнопку Отмена , чтобы отменить операцию. По мере выполнения операции периодически вызывайте IProgressDialog::HasUserCancelled , чтобы узнать, нажал ли пользователь кнопку Отмена . Приложения обычно вызывают этот метод каждый раз при вызове IProgressDialog::SetProgress или IProgressDialog::SetProgress64.
  6. В диалоговом окне отображаются три строки текста. Приложение может периодически вызывать IProgressDialog::SetLine для отображения сообщения в одной из этих строк. Этот метод обычно используется для предоставления сведений о текущем состоянии операции. Типичным сообщением является примерно следующее: "В настоящее время обрабатывается элемент XXX...". Сообщения обычно отображаются в строках 1 и 2. Сообщения можно отображать в строке 3, только если вы не поручили объекту диалогового окна хода выполнения оценить оставшееся время, установив флаг PROGDLG_AUTOTIME в параметре dwFlagsдля IProgressDialog::StartProgressDialog. В этом случае для отображения предполагаемого времени используется третья текстовая строка.
После завершения операции:
  1. Вызовите метод IProgressDialog::StopProgressDialog , чтобы закрыть диалоговое окно.
  2. Отпустите объект диалогового окна хода выполнения.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header shlobj_core.h