C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Время до завершения в прогресс баре / ProgressBar / Элементы управления


Время до завершения в прогресс баре.


Автор Craig Henderson

  • Скачать исходник - 3 Kb
  • Скачать демонстрационный проект - 22 Kb

    Sample Image

    Описание

    Иногда не достаточно процента выполненной операции в прогресс баре. Поэтому был придуман класс для отображения времени оставшегося до завершения операции.

    Класс использует простое линейное вычисление для получения оставшегося времени. Например, если в прогрессбаре уже выполнено 10% и это заняло 5 секунд, то для завешения выполнения остаётся 45 секунд.

    TProgressTimeToComplete обеспечивает полную функциональность и может служить как полная замена для MFC класса CProgressCtrl.

    Имеется одна виртуальная функция, которая может быть перегружена для настройки отображения. GetRemainingText вызывается для форматирования вывода текстовой строки, которая выводится поверх прогресс бара. Функция имеет два аргумента процент выполненной операции и время до конца выполнения операции - в секундах. По умолчанию функция выглядит примерно так:

    CString TProgressTimeToComplete::GetRemainingText(double lfPercent, double lfSecsRemaining)
    {
        CString str;
        int     nSeconds = (int)fmod(lfSecsRemaining, 60.0);
    
        if (lfSecsRemaining < 60)
        {
            if (nSeconds < 1)
                str = "Less than a second";
            else
                str.Format("%d second%s remaining", nSeconds, nSeconds==1? "":"s");
        }
        else
        {
            int nMinutes = (int)(lfSecsRemaining/60.0);
            str.Format("%d minute%s, %d second%s remaining", nMinutes, nMinutes==1? "":"s",
                                                             nSeconds, nSeconds==1? "":"s");
        }
    
        return str;
    }