Линейный индикатор (Progress Bar)


Линейный индикатор представляет собой прямоугольник, заполняющийся синими квадратиками (блоками). Чем больше заполнен прямоугольник, тем ближе завершение процесса. Обычно этот элемент управления используют в качестве индикатора хода выполнения некоторого процесса в приложении, например загрузка или сохранение файла.

Создайте SDI-приложение при помощи AppWizard. Назовите его Progress.
Щелкните правой кнопкой мыши на имени класса CProgressView в окне ClassView и выберите в контекстном меню пункт Add Member Variable.
В поле Variable type (тип переменной) укажите тип CProgressCtrl. В поле Variable Declaration (описание переменной) укажите имя переменной m_progress. В поле Access (доступ) установите флажок на поле Protected (защищенный). Нажмите на кнопку ОК.
Теперь перейдем к формированию линейного индикатора.
Все элементы управления формируются методом OnCreate() класса представления CProgressView. Эта функция обрабатывает сообщение Windows WM_CREATE. Чтобы включить этот метод в класс представления щелкните правой кнопкой мыши на имени класса CProgressView в коне ClassView и выберите в контекстном меню пункт Add Windows Message Handler (Добавить обработчик сообщений). Выберите WM_CREATE из списка слева и затем щелкните на кнопку Add and Edit (Добавить и редактировать). После комментария TODO вставьте строку:
CreateProgress()

Снова щелкните правой кнопкой мыши на имени класса CProgressView в окне ClassView и выберите в контекстном меню пункт Add Member Function (Добавить функцию член). Задайте тип возвращаемого значения в поле Function Type (тип функции) как void, а в поле Function Declaration (описание функции) введите объявление функции CreateProgress(). Метод должен быть объявлен открытым (public). Нажмите на кнопку ОК.
Добавьте в эту функцию следующий код:

     void CProgressView::CreateProgress()
     {
          m_progress.Create(WS_CHILD | WS_VISIBLE | WS_BORDER, CRect (100,40,270,70), this, IDC_PROGRESS) 
          m_progress.SetRange(1, 100) 
          m_progress.SetStep(10) 
          m_progress.SetPos(60) 
     }


В меню View запустите Resource Symbols... Откроется диалоговое окно Resource Symbols. Нажмите на кнопку New... В диалоговом окне New Symbol в поле Name введите IDC_PROGRESS, поле Value оставьте по умолчанию. Нажмите на кнопку ОК, затем на кнопку Close.
Откомпилируйте приложение и вы увидите линейный индикатор, который заполнен на 60%.

Если у Вас все работает, то пора разобраться что мы написали.
Функция CreateProgress() формирует элемент управления, вызывая его метод Create(), т.е. метод класса связанного с элементом управления.
Эта функция имеет четыре параметра:
Флаг стиля - это те же константы, которые используются для описания любого окна (ведь элемент управления есть окно специального вида).
В данном случае нужно включить следующие константы: После того как элемент управления сформирован, его нужно инициализировать. Класс CProgressCtrl имеет ряд функций-членов, которые позволяют инициализировать элемент управления и манипулировать им.
Create() Создает элемент управления.
OffsetPos() Продвигает зону заполнения на заданное количество блоков.
SetPos() Устанавливает текущую величину параметра элемента.
SetRange() Устанавливает максимальное и минимальное значения параметра элемента.
SetStep() Устанавливает приращение параметра элемента, который соответствует одному блоку.
StepIt() Добавляет один блок в зону заполнения.

В нашем примере были использованы функции: Create, SetRange, SetStep, SetPos.
Обычно когда начинается процесс линейный индикатор пуст, но в нашем примере он заполнен на 60% ( m_progress.SetPos(60) ).

Содержание

Hosted by uCoz



Смотрите также:



Hosted by uCoz