Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.30. Вспомогательный объект для вывода индикатора выполнения

А.5.30.5. Команда RDS_PBAR_POSITION – текущая позиция индикатора

Команда RDS_PBAR_POSITION позволяет считывать и устанавливать текущую позицию индикатора, определяющую степень его заполненности.

Вызов команды для установки

  int iPos= … // Позиция индикатора
  (Bar,RDS_PBAR_POSITION,0,iPos);

Вызов команды для чтения

  int iPos=(Bar,RDS_PBAR_POSITION,0);

Параметры и результат

Bar (RDS_HOBJECT)
Идентификатор вспомогательного объекта для работы с индикатором, ранее созданного функцией rdsPBARCreate.
iPos (int)
Значение текущей позиции индикатора.

Примечания

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

  int Total= …       // Общее число шагов операции
   LastUpdate;  // Время последнего обновления индикатора
   Bar=(Total,L"Выполнение...");
  (Bar,); // Показать индикатор
  LastUpdate=GetTickCount();
  for(int i=0;i<Total;i++)
    {  time=GetTickCount(); // Текущее время
      if(time-LastUpdate>1000) // Прошло > 1 сек
        { LastUpdate=time; // Новое время обновления
          (Bar,RDS_PBAR_POSITION,0,i);
        }
      … какие-то действия …
    } // for(int i=0;...)
  (Bar); // Удаление индикатора

Здесь для определения интервала времени используется функция Windows API GetTickCount, возвращающая время в миллисекундах, прошедшее с момента загрузки системы.

См. также

rdsPBARCreate, rdsSetObjectInt, rdsGetObjectInt.


<< >> Оглавление Указатель