Шаг 51 - Что такое CProgressCtrl

Создание проекта

Продолжаем развивать наш проект. Только на диалоговую панель необходимо поместить элемент управления - индикатор. Как внизу.

51_1.gif (9086 b)

Создаем код

Описание класса в классе окна диалога.

class CTestDlg : public CDialog	// класс диалогового окна
{
.........
CSliderCtrl csSlider; // класс элемента управления
CProgressCtrl cProgress; // класс бегунка
protected:
........
};

Реализация обмена данного элемента управления с классом.

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
..........
DDX_Control(pDX, IDC_SLIDER1, csSlider); // наш обмен
DDX_Control(pDX, IDC_PROGRESS1, cProgress); // бегунок
}

Реакция нажатия на кнопку.

void CTestDlg::OnSend()
{
cProgress.SetRange(0,10); // диапазон
cProgress.SetPos(0); // позиция
for (int x=0;x<=10;x++) // цикл
{
cProgress.SetPos(x); // меняем позицию
Sleep(50); // задержка
}
}

Вот что будет происходить после нажатия на Send.

51_2.gif (3946 b)

Описание

Как и в предыдущем примере, описание в классе диалогового окна, настройка DDX. Нас больше интересует процедура нажатия на кнопку. Функция SetRange устанавливает диапазон значений индикаторов состояния. Первое число минимум, второе максимум. Не перепутайте. SetPos устанавливает позицию индикатора. Мы его ставим в ноль для начала. Запускаем цикл. В цикле для реализации задержки индикатора используем функцию Sleep. Вот её описание. В параметры передается задержка в размерности миллисекунды.

VOID Sleep
(
DWORD dwMilliseconds // задержка
);

Запускайте. У вас побежит индикатор состояния. Если быстро, увеличьте число в функции Sleep.

Шпаргалка

Поместить элемент управления на диалоговое окно.

Описать класс.

class CTestDlg : public CDialog	// класс диалогового окна
{
.........
CProgressCtrl cProgress; // класс бегунка
........
};

Связать класс с элементом управления через DDX.

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_PROGRESS1, cProgress); // бегунок
}

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.