Реализация индикатора хода выполнения
Область применения: Outlook 2013 | Outlook 2016
Многие операции, инициированные клиентами, занимают значительное время. Одним из входных параметров этих потенциально длительных операций является указатель на объект выполнения — объект, реализующий интерфейс IMAPIProgress : IUnknown . Объекты хода выполнения управляют внешним видом и отображением индикаторов хода выполнения и реализуются клиентами и MAPI. Вы можете выбрать, следует ли реализовывать объект хода выполнения. Реализация MAPI доступна для поставщиков услуг, если вы решили не предоставлять реализацию.
Объекты хода выполнения работают со следующими фрагментами данных:
Глобальное минимальное значение, которое при вызове метода IMAPIProgress::P rogress должно быть меньше или равно значению параметра ulValue . В начале операции значение ulValue будет равно этому минимальному значению.
Глобальное максимальное значение, которое при вызове метода IMAPIProgress::P rogress должно быть больше или равно параметру ulValue . В конце операции значение ulValue будет равно этому максимальному значению.
Значение флага, указывающее, соответствует ли ход выполнения элементу верхнего или нижнего уровня.
Значение типа , указывающее текущий уровень хода выполнения операции.
Количество обработанных в данный момент элементов относительно общего числа.
Общее количество элементов, обрабатываемых во время операции.
Минимальное и максимальное значения представляют начало и конец операции в числовой форме. Используйте 1 для начального минимального значения и 1000 для начального максимального значения, передав эти значения поставщикам служб в методах IMAPIProgress::GetMin и IMAPIProgress::GetMax . Поставщики услуг сбрасывают эти значения при вызове IMAPIProgress::SetLimits.
Значение флагов используется поставщиками служб для определения того, как они должны задавать другие значения. Инициализируйте значение флагов для MAPI_TOP_LEVEL и возвращайте это значение в реализации GetFlags , пока поставщик службы не сбросит его, вызвав SetLimits.
В реализации метода SetLimits сохраните локальные копии каждого из параметров: lpulMin, lpulMax и lpulFlags. Эти значения должны быть доступны, когда поставщик услуг вызывает методы GetMin, GetMax или GetFlags .
Чтобы обновить отображение индикатора хода выполнения, поставщики услуг вызывают метод IMAPIProgress::P rogress . Этот метод имеет три параметра: значение, количество и итог. Используйте первый параметр ulValue для отображения индикатора хода выполнения. Параметр ulValue является индикатором хода выполнения и будет равен глобальному ulMin только в самом начале операции и глобальному ulMax только по завершении операции.
Используйте второй и третий параметры, ulCount и ulTotal, если они доступны, для отображения необязательных сообщений, таких как "5 элементов завершено из 10". Если для второго и третьего параметров задано значение 0, можно выбрать, следует ли визуально изменять индикатор хода выполнения. Некоторые поставщики услуг устанавливают для этих параметров нули, чтобы указать, что они обрабатывают подобъект, ход выполнения которого отслеживается относительно родительского объекта. В этой ситуации имеет смысл изменять отображение только в том случае, если родительский объект сообщает о ходе выполнения. Некоторые поставщики услуг каждый раз передают нули для этих параметров.