Создание элемента управления ProgressBar
Установщик Windows содержит функции для отображения индикатора хода выполнения в диалоговом окне отображения действий. Элемент управления ProgressBar графически представляет установку отдельных компонентов и сообщает либо общее время, прошедшее относительно оставшегося времени, либо приблизительное общее время, оставшееся до завершения установки.
Чтобы определить общее время установки, установщик отслеживает общее количество тактов хода выполнения, ожидаемых каждым действием во время создания скрипта выполнения. После создания скрипта сохраняется итоговый тик хода выполнения и начинается установка.
Сообщения о ходе выполнения, в которых подробно указано затраченное количество тактов хода выполнения, отправляются в обработчик активных сообщений при выполнении каждого действия в скрипте. При каждом сообщении о ходе выполнения установщик передает действие SetProgress ControlEvent в активное диалоговое окно. Последовательность пользовательского интерфейса должна быть создана для создания диалогового окна отображения действия во время выполнения скрипта для получения сообщений SetProgress ControlEvent от установщика.
Когда диалоговое окно отображения действия получает событие SetProgress ControlEvent, оно проверяет таблицу EventMapping на наличие элементов управления, подписывающихся на ControlEvent. Элемент управления ProgressBar в диалоговом окне отображения действия подписан на с помощью атрибута элемента управления Progress, указанного в столбце Атрибуты. Атрибут Progress Control указывает, что элементу управления ProgressBar будут переданы значения ticksSoFar и totalTicks вместе с setProgress ControlEvent. Элемент управления индикатора выполнения использует эти сведения для продвижения графической панели слева направо для установки и справа налево для операции отката .
Кроме того, установщик транслирует элемент управления TimeRemainingEvent для каждого сообщения о ходе выполнения. Общее время, оставшееся на установку, определяется путем первого вычисления скорости выполнения, которая представляет собой общее количество затраченных тактов на общее время с момента начала установки. Общее количество оставшихся тактов, разделенное на скорость выполнения, дает приблизительное оставшееся время.
Когда диалоговое окно отображения действия получает событие TimeRemaining ControlEvent, оно снова ищет в таблице EventMapping все элементы управления, на которые подписана подписка. Чтобы отобразить оставшееся время, элемент управления Text должен быть подписан на timeRemaining ControlEvent с атрибутом элемента управления TimeRemaining, указанным в столбце Атрибуты.
Подписанный элемент управления Текст запрашивает у таблицы UIText параметризованную строку шаблона с именем TimeRemaining. Эта строка имеет два параметра: [1] для минут и [2] для секунд. Элемент управления "Текст" преобразует каждое значение в минуты и секунды, вычисляет строку шаблона TimeRemaining и обновляет элемент управления "Текст" новыми сведениями.
Если уровень отображения пользовательского интерфейса установлен на базовый или более низкий, установщик отображает диалоговое окно по умолчанию, содержащее индикатор выполнения и текстовое поле TimeRemaining. Дополнительные сведения см. в разделе Уровни пользовательского интерфейса.