Научно-исследовательская лаборатория систем ЧПУ
Научно-исследовательская лаборатория систем ЧПУ

Поиск по сайту:
 

Расписание курсов "Программирование SINUMERIK 810D/840D/840Di"



Класс CScurryProgressCtrl

Авторы: Мартинов Г. М.
Пушков Р. Л.
Кафедра КСУ МГТУ "СТАНКИН"

Тестовое приложение CScurryProgressBarDemo с исходным текстом  размер файла: 13,1 Kб

Библиотека CScurryProgressBar  размер файла: 22,1 Kб

Класс CScurryProgressCtrl предназначен для расширения функциональности стандартного класса CProgressCtrl с целью получения прогресс-бара, изменяющего свое положение с течением времени.

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


Рис. 1. Пример использования класса CScurryProgressCtrl в стандартном диалоговом приложении.

ПРИМЕЧАНИЕ

Класс написан с помощью MSVC 6.0 с использованием библиотеки MFC и может быть использован только в MFC проектах на языке C++.

Диаграмма классов, приведенная на рис. 2, иллюстрирует реализацию класса CScurryProgressCtrl.


Рис. 2. Диаграмма классов в нотации UML.

Использование класса CScurryProgressCtrl

Чтобы воспользоваться классом CScurryProgressCtrl, в первую очередь, необходимо включить в проект заголовочный файл cscurryprogressctrl.h и файл scurryprogressctrl.lib для компоновки. Необходимо также, чтобы файл scurryprogressctrl.dll находился в каталоге с приложением.

Для использования класса CScurryProgressCtrl в своем приложении нужно проделать следующие шаги:

1. Добавить в класс диалога (или другого окна содержащего индикатор) объект класса CScurryProgressCtrl.

class CScurryProgressCtrlDemoDlg : public CDialog
{
private:
// ...
	CScurryProgressCtrl m_progress;
// ...
};

2. Создать и расположить прогресс-бар в заданной области. Это сделано в функции OnInitDialog(). В ресурсе диалогового окна создан элемент-заглушка (например, рамка для текста). Замена элемента-заглушки на объект класса CScurryProgressCtrl осуществляется, как показано ниже:

BOOL CScurryProgressCtrlDemoDlg::OnInitDialog()
{
// ...
	//------- Scurry progress control init -------------------------------
	CWnd *pFrame=GetDlgItem(IDC_SCURRYPROGRESSCTRL);
	CRect rcWnd;
	pFrame->GetWindowRect(rcWnd);
	pFrame->DestroyWindow();
	ScreenToClient(rcWnd);

	m_progress.Create(WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, rcWnd, this, IDC_SCURRYPROGRESSCTRL);
 // ...
}

Свойства и методы класса CScurryProgressCtrl

int m_nElapse

Время полного заполнения прогресс-бара в 10мс интервалах.

void Run ()

Запуск прогресс-бара.

void Stop ()

Остановка прогресс-бара.

void SetProgressBarColor (COLORREF color, BOOL bForeColor)

Установка цвета фона и переднего плана.

Параметры:

color - цвет, который необходимо установить для фона или переднего плана. Для задания цвета необходимо использовать RGB() макрос.

bForeColor - если TRUE, то задается фон переднего плана, иначе - фона.

Также CScurryProgressCtrl посылает родительскому окну событие WM_NOTIFY в случае нажатия кнопки мыши на контроле. При этом используются следующие идентификаторы событий:

NM_MOUSE_BUTTON_UP - нажатие кнопки мыши,

NM_MOUSE_BUTTON_DOWN - отпускание кнопки мыши,

NM_MOUSE_BUTTON_DBLCLK - двойной щелчок мышью.


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