Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.30. Вспомогательный объект для вывода индикатора выполнения
А.5.30.5. Команда RDS_PBAR_POSITION – текущая позиция индикатора
Команда RDS_PBAR_POSITION позволяет считывать и устанавливать текущую позицию индикатора, определяющую степень его заполненности.
Вызов команды для установки
int iPos= … // Позиция индикатора rdsSetObjectInt(Bar,RDS_PBAR_POSITION,0,iPos);
Вызов команды для чтения
int iPos=rdsGetObjectInt(Bar,RDS_PBAR_POSITION,0);
Параметры и результат
- Bar (RDS_HOBJECT)
- Идентификатор вспомогательного объекта для работы с индикатором, ранее созданного функцией rdsPBARCreate.
- iPos (int)
- Значение текущей позиции индикатора.
Примечания
Эта команда позволяет установить индикатор в новую произвольную позицию (изменения немедленно отразятся в окне этого индикатора). Если число шагов операции, ход которой нужно отражать на индикаторе, очень велико, прямая установка может оказаться удобнее пошагового изменения командой RDS_PBAR_ADDTOPOS. При большом количестве элементарных операций, каждая из которых занимает немного процессорного времени, суммарные накладные расходы на обновление индикатора на каждом шаге могут оказаться больше времени выполнения самой операции. В таких случаях удобнее обновлять индикатор не на каждом шаге, а с заданным интервалом по времени. Этого можно добиться, например, циклом следующего вида:
int Total= … // Общее число шагов операции DWORD LastUpdate; // Время последнего обновления индикатора RDS_HOBJECT Bar=rdsPBARCreateW(Total,L"Выполнение..."); rdsCommandObject(Bar,RDS_PBAR_SHOW); // Показать индикатор LastUpdate=GetTickCount(); for(int i=0;i<Total;i++) { DWORD time=GetTickCount(); // Текущее время if(time-LastUpdate>1000) // Прошло > 1 сек { LastUpdate=time; // Новое время обновления rdsSetObjectInt(Bar,RDS_PBAR_POSITION,0,i); } … какие-то действия … } // for(int i=0;...) rdsDeleteObject(Bar); // Удаление индикатора
Здесь для определения интервала времени используется функция Windows API GetTickCount, возвращающая время в миллисекундах, прошедшее с момента загрузки системы.
См. также