Класс CScurryProgressCtrl
Авторы: Мартинов Г. М. Пушков Р. Л. Кафедра КСУ МГТУ "СТАНКИН"
Тестовое приложение CScurryProgressBarDemo с исходным текстом 
Библиотека CScurryProgressBar 
Класс 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()
{
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
Время полного заполнения прогресс-бара в 10мс интервалах.
Запуск прогресс-бара.
Остановка прогресс-бара.
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 - двойной щелчок мышью.
Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. |