Класс CProgressCtrl
Предоставляет функциональные возможности стандартного элемента управления "индикатор выполнения" Windows.
Синтаксис
class CProgressCtrl : public CWnd
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CProgressCtrl::CProgressCtrl |
Формирует объект CProgressCtrl . |
Открытые методы
Имя | Описание |
---|---|
CProgressCtrl::Create |
Создает элемент управления индикатора выполнения и присоединяет его к объекту CProgressCtrl . |
CProgressCtrl::CreateEx |
Создает элемент управления хода выполнения с указанными расширенными стилями Windows и присоединяет его к объекту CProgressCtrl . |
CProgressCtrl::GetBarColor |
Возвращает цвет индикатора хода выполнения для текущего элемента управления индикатора хода выполнения. |
CProgressCtrl::GetBkColor |
Возвращает цвет фона текущей панели хода выполнения. |
CProgressCtrl::GetPos |
Возвращает текущую позицию индикатора выполнения. |
CProgressCtrl::GetRange |
Возвращает нижние и верхние пределы диапазона элемента управления индикатора выполнения. |
CProgressCtrl::GetState |
Возвращает состояние текущего элемента управления индикатора хода выполнения. |
CProgressCtrl::GetStep |
Извлекает шаг приращения для индикатора хода выполнения текущего элемента управления индикатора хода выполнения. |
CProgressCtrl::OffsetPos |
Перемещает текущую позицию элемента управления индикатора хода выполнения с помощью указанного добавочного и перерисовывает линейку, чтобы отразить новую позицию. |
CProgressCtrl::SetBarColor |
Задает цвет индикатора хода выполнения в текущем элементе управления индикатора хода выполнения. |
CProgressCtrl::SetBkColor |
Задает цвет фона для индикатора выполнения. |
CProgressCtrl::SetMarquee |
Включает или отключает режим маркирования для текущего элемента управления индикатора хода выполнения. |
CProgressCtrl::SetPos |
Задает текущую позицию для элемента управления индикатора хода выполнения и перерисовывает панель, чтобы отразить новую позицию. |
CProgressCtrl::SetRange |
Задает минимальный и максимальный диапазоны для элемента управления индикатором хода выполнения и перерисовывает панель, чтобы отразить новые диапазоны. |
CProgressCtrl::SetState |
Задает состояние текущего элемента управления "Индикатор выполнения". |
CProgressCtrl::SetStep |
Задает шаг для элемента управления индикатора хода выполнения. |
CProgressCtrl::StepIt |
Перемещает текущую позицию для элемента управления индикатора хода выполнения на шаге (см. раздел SetStep ) и перерисовывает панель, чтобы отразить новую позицию. |
Замечания
Элемент управления индикатора выполнения — это окно, которое приложение может использовать для указания хода выполнения длительной операции. Он состоит из прямоугольника, который постепенно заполняется слева направо, с цветом выделения системы в процессе выполнения операции.
Элемент управления индикатора выполнения имеет диапазон и текущее положение. Диапазон представляет общую длительность операции, а текущая позиция представляет ход выполнения, который приложение сделало к выполнению операции. Процедура окна использует диапазон и текущую позицию, чтобы определить процент индикатора выполнения для заполнения цветом выделения. Поскольку значения диапазона и текущей позиции выражаются как целые числа со знаком, возможный диапазон текущих значений позиции составляет от -2 147 483 648 до 2 147 483 647 включительно.
Дополнительные сведения об использовании CProgressCtrl
см. в разделе "Элементы управления " и "Использование CProgressCtrl
".
Иерархия наследования
CProgressCtrl
Требования
Заголовок: afxcmn.h
CProgressCtrl::CProgressCtrl
Формирует объект CProgressCtrl
.
CProgressCtrl();
Замечания
После создания CProgressCtrl
объекта вызовите CProgressCtrl::Create
элемент управления индикатора выполнения.
Пример
// Create a progress control object on the stack.
CProgressCtrl myCtrl;
// Create a progress control object on the heap.
CProgressCtrl *pmyCtrl = new CProgressCtrl;
CProgressCtrl::Create
Создает элемент управления индикатора выполнения и присоединяет его к объекту CProgressCtrl
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwStyle
Задает стиль элемента управления индикатора выполнения. Примените любое сочетание стилей окон, указанных в CreateWindow
пакете SDK для Windows, помимо следующих стилей элементов управления индикатора выполнения, к элементу управления:
PBS_VERTICAL
Отображает сведения о ходе выполнения по вертикали, сверху вниз. Без этого флага элемент управления индикатора хода выполнения отображается горизонтально слева направо.PBS_SMOOTH
Отображает постепенное, плавное заполнение элемента управления индикатора выполнения. Без этого флага элемент управления заполняется блоками.
rect
Задает размер и позицию элемента управления индикатора выполнения. Это может быть CRect
объект или RECT
структура. Поскольку элемент управления должен быть дочерним окном, указанные координаты относятся к клиентской pParentWnd
области.
pParentWnd
Указывает родительское окно элемента управления индикатора хода выполнения, как правило, значение CDialog
. Он не должен иметь значение NULL.
nID
Указывает идентификатор элемента управления индикатора выполнения.
Возвращаемое значение
ЗНАЧЕНИЕ TRUE, если CProgressCtrl
объект успешно создан; в противном случае — ЗНАЧЕНИЕ FALSE.
Замечания
Вы создаете CProgressCtrl
объект на двух шагах. Сначала вызовите конструктор, который создает CProgressCtrl
объект, а затем вызов Create
, который создает элемент управления индикатора выполнения.
Пример
CProgressCtrl myCtrl;
// Create a smooth child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30),
pParentWnd, IDC_PROGRESSCTRL);
CProgressCtrl::CreateEx
Создает элемент управления (дочернее окно) и связывает его с CProgressCtrl
объектом.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwExStyle
Задает расширенный стиль создаваемого элемента управления. Список расширенных стилей Windows см dwExStyle
. в параметре CreateWindowEx
пакета SDK для Windows.
dwStyle
Задает стиль элемента управления индикатора выполнения. Примените любое сочетание стилей окон, описанных в CreateWindow
пакете SDK для Windows.
rect
Ссылка на RECT
структуру, описывающую размер и положение создаваемого окна в координатах pParentWnd
клиента.
pParentWnd
Указатель на окно, которое является родительским элементом элемента управления.
nID
Идентификатор дочернего окна элемента управления.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Используйте CreateEx
вместо Create
применения расширенных стилей Windows, указанных предисловием WS_EX_
расширенного стиля Windows.
CProgressCtrl::GetBarColor
Возвращает цвет индикатора хода выполнения для текущего элемента управления индикатора хода выполнения.
COLORREF GetBarColor() const;
Возвращаемое значение
Цвет текущей панели хода выполнения, представленной в виде COLORREF
значения, или CLR_DEFAULT
если цвет индикатора хода выполнения является цветом по умолчанию.
Замечания
Этот метод отправляет PBM_GETBARCOLOR
сообщение, описанное в пакете SDK для Windows.
CProgressCtrl::GetBkColor
Возвращает цвет фона текущей панели хода выполнения.
COLORREF GetBkColor() const;
Возвращаемое значение
Цвет фона текущей панели хода выполнения, представленный COLORREF
в виде значения.
Замечания
Этот метод отправляет PBM_GETBKCOLOR
сообщение, описанное в пакете SDK для Windows.
CProgressCtrl::GetPos
Извлекает текущую позицию индикатора выполнения.
int GetPos();
Возвращаемое значение
Позиция элемента управления индикатора выполнения.
Замечания
Позиция элемента управления "Индикатор выполнения" не является физическим расположением на экране, а между верхним и нижним диапазоном, указанным в SetRange
.
Пример
CProgressCtrl myCtrl;
// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
IDC_PROGRESSCTRL);
// Set the new position to half of the current position.
myCtrl.SetPos(myCtrl.GetPos() / 2);
CProgressCtrl::GetRange
Возвращает текущие нижние и верхние пределы или диапазон элемента управления индикатора выполнения.
void GetRange(
int& nLower,
int& nUpper);
Параметры
nLower
Ссылка на целое число, получающее нижнее ограничение элемента управления индикатора выполнения.
nUpper
Ссылка на целое число, получающее верхний предел элемента управления индикатора выполнения.
Замечания
Эта функция копирует значения нижних и верхних ограничений в целые числа, на которые nLower
ссылается и nUpper
соответственно.
Пример
CProgressCtrl myCtrl;
// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
IDC_PROGRESSCTRL);
// Set the position to be one-fourth of the total range.
int nLower, nUpper;
myCtrl.GetRange(nLower, nUpper);
myCtrl.SetPos((nUpper - nLower) / 4);
CProgressCtrl::GetState
Возвращает состояние текущего элемента управления индикатора хода выполнения.
int GetState() const;
Возвращаемое значение
Состояние текущего элемента управления индикатора хода выполнения, которое является одним из следующих значений:
Значение | Область, республика, край, округ |
---|---|
PBST_NORMAL | В процессе |
PBST_ERROR | Ошибка |
PBST_PAUSED | Приостановлен |
Замечания
Этот метод отправляет PBM_GETSTATE
сообщение, описанное в пакете SDK для Windows.
Пример
Первый пример кода определяет переменную, m_progressCtrl
которая используется для программного доступа к элементу управления индикатора выполнения. Эта переменная используется в следующем примере.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
Следующий пример кода извлекает состояние текущего элемента управления индикатора хода выполнения.
// Display the current state of the progress control.
CString str = _T("The progress control state is ");
int progState = m_progressCtrl.GetState();
if (progState == PBST_NORMAL)
str += _T("NORMAL");
else if (progState == PBST_PAUSED)
str += _T("PAUSED");
else if (progState == PBST_ERROR)
str += _T("ERROR");
else
str += _T("unknown");
AfxMessageBox(str, MB_ICONEXCLAMATION);
CProgressCtrl::GetStep
Извлекает шаг приращения для индикатора хода выполнения текущего элемента управления индикатора хода выполнения.
int GetStep() const;
Возвращаемое значение
Шаг приращения индикатора выполнения.
Замечания
Шаг увеличивается на сумму, по которой вызов CProgressCtrl::StepIt
увеличивает текущую позицию индикатора выполнения.
Этот метод отправляет PBM_GETSTEP
сообщение, описанное в пакете SDK для Windows.
Пример
Первый пример кода определяет переменную, m_progressCtrl
которая используется для программного доступа к элементу управления индикатора выполнения. Эта переменная используется в следующем примере.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
Следующий пример кода извлекает шаг приращения текущего элемента управления индикатора хода выполнения.
// Get the step increment for the progress control.
CString str;
int incr = m_progressCtrl.GetStep();
str.Format(_T("The step increment is %d."), incr);
AfxMessageBox(str, MB_ICONEXCLAMATION);
CProgressCtrl::OffsetPos
Перемещает текущую позицию элемента управления хода выполнения путем увеличения, указанного nPos
и перерисовывает полосу, чтобы отразить новую позицию.
int OffsetPos(int nPos);
Параметры
nPos
Сумма для продвижения позиции.
Возвращаемое значение
Предыдущая позиция элемента управления индикатора выполнения.
Пример
CProgressCtrl myCtrl;
// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
IDC_PROGRESSCTRL);
// Offset the position by one-fourth of the total range.
int nLower, nUpper;
myCtrl.GetRange(nLower, nUpper);
myCtrl.OffsetPos((nUpper - nLower) / 4);
CProgressCtrl::SetBarColor
Задает цвет индикатора хода выполнения в текущем элементе управления индикатора хода выполнения.
COLORREF SetBarColor(COLORREF clrBar);
Параметры
clrBar
[in] Значение COLORREF
, указывающее новый цвет индикатора хода выполнения. Укажите CLR_DEFAULT
, чтобы индикатор выполнения использовал свой цвет по умолчанию.
Возвращаемое значение
Предыдущий цвет индикатора хода выполнения, представленный как COLORREF
значение, или CLR_DEFAULT
если цвет индикатора хода выполнения является цветом по умолчанию.
Замечания
Метод SetBarColor
задает цвет индикатора хода выполнения, только если тема Windows Vista не действует.
Этот метод отправляет PBM_SETBARCOLOR
сообщение, описанное в пакете SDK для Windows.
Пример
Первый пример кода определяет переменную, m_progressCtrl
которая используется для программного доступа к элементу управления индикатора выполнения. Эта переменная используется в следующем примере.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
Следующий пример кода изменяет цвет индикатора выполнения на красный, зеленый, синий или стандартный.
// Set the progress bar color to red, green, blue, or
// the system default. The SetBarColor method has an
// effect only if the Windows system theme is Classic.
void CCProgressCtrl_s1Dlg::OnSetbarcolorRed()
{
m_progressCtrl.SetBarColor(RGB(255, 0, 0));
}
void CCProgressCtrl_s1Dlg::OnSetbarcolorGreen()
{
m_progressCtrl.SetBarColor(RGB(0, 255, 0));
}
void CCProgressCtrl_s1Dlg::OnSetbarcolorBlue()
{
m_progressCtrl.SetBarColor(RGB(0, 0, 255));
}
void CCProgressCtrl_s1Dlg::OnSetbarcolorOri()
{
m_progressCtrl.SetBarColor(CLR_DEFAULT);
}
CProgressCtrl::SetBkColor
Задает цвет фона для индикатора выполнения.
COLORREF SetBkColor(COLORREF clrNew);
Параметры
clrNew
COLORREF
Значение, указывающее новый цвет фона. CLR_DEFAULT
Укажите значение для использования цвета фона по умолчанию для индикатора выполнения.
Возвращаемое значение
Значение COLORREF
, указывающее предыдущий цвет фона или CLR_DEFAULT
цвет фона по умолчанию.
Пример
CProgressCtrl myCtrl;
// Create a smooth child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30),
pParentWnd, IDC_PROGRESSCTRL);
// Set the background color to red.
myCtrl.SetBkColor(RGB(255, 0, 0));
CProgressCtrl::SetMarquee
Включает или отключает режим маркирования для текущего элемента управления индикатора хода выполнения.
BOOL SetMarquee(
BOOL fMarqueeMode,
int nInterval);
Параметры
fMarqueeMode
[in] TRUE
для включения режима маркирования или FALSE
отключения режима маркирования.
nInterval
[in] Время в миллисекундах между обновлениями анимации marquee.
Возвращаемое значение
Этот метод всегда возвращает значение TRUE
.
Замечания
При включении режима marquee индикатор хода выполнения анимируется и прокручивается, как знак в театре.
Этот метод отправляет PBM_SETMARQUEE
сообщение, описанное в пакете SDK для Windows.
Пример
Первый пример кода определяет переменную, m_progressCtrl
которая используется для программного доступа к элементу управления индикатора выполнения. Эта переменная используется в следующем примере.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
Следующий пример кода запускается и останавливает анимацию прокрутки в марке.
// Turn the marquee animation on or off.
void CCProgressCtrl_s1Dlg::OnSetmarqueeOn()
{
m_progressCtrl.SetMarquee(TRUE, nMarqueeInterval);
}
void CCProgressCtrl_s1Dlg::OnSetmarqueeOff()
{
m_progressCtrl.SetMarquee(FALSE, nMarqueeInterval);
}
CProgressCtrl::SetPos
Задает текущее положение элемента управления индикатора хода выполнения, указанное nPos
и перерисовывает панель, чтобы отразить новую позицию.
int SetPos(int nPos);
Параметры
nPos
Новая позиция элемента управления индикатора хода выполнения.
Возвращаемое значение
Предыдущая позиция элемента управления индикатора выполнения.
Замечания
Позиция элемента управления "Индикатор выполнения" не является физическим расположением на экране, а между верхним и нижним диапазоном, указанным в SetRange
.
Пример
CProgressCtrl myCtrl;
// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
IDC_PROGRESSCTRL);
// Set the range to be 0 to 100.
myCtrl.SetRange(0, 100);
// Set the position to be half, 50.
myCtrl.SetPos(50);
CProgressCtrl::SetRange
Задает верхние и нижние пределы диапазона элемента управления индикатора выполнения и перерисовывает панель, чтобы отразить новые диапазоны.
void SetRange(
short nLower,
short nUpper);
void SetRange32(
int nLower,
int nUpper);
Параметры
nLower
Указывает нижний предел диапазона (значение по умолчанию равно нулю).
nUpper
Задает верхний предел диапазона (по умолчанию — 100).
Замечания
Функция-член SetRange32
задает 32-разрядный диапазон для элемента управления ход выполнения.
Пример
CProgressCtrl myCtrl;
// Create a smooth child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30),
pParentWnd, IDC_PROGRESSCTRL);
// Set the range to be 0 to 100.
myCtrl.SetRange(0, 100);
CProgressCtrl::SetState
Задает состояние текущего элемента управления "Индикатор выполнения".
int SetState(int iState);
Параметры
iState
[in] Состояние, которое нужно задать индикатор выполнения. Используйте одно из следующих значений:
PBST_NORMAL
-РазвиватьсяPBST_ERROR
-ОшибкаPBST_PAUSED
-Приостановлена
Возвращаемое значение
Предыдущее состояние текущего элемента управления "Индикатор выполнения".
Замечания
Этот метод отправляет PBM_SETSTATE
сообщение, описанное в пакете SDK для Windows.
Пример
Первый пример кода определяет переменную, m_progressCtrl
которая используется для программного доступа к элементу управления индикатора выполнения. Эта переменная используется в следующем примере.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
В следующем примере кода для текущего элемента управления индикатора хода выполнения задано значение "Приостановлено" или "Выполняется".
// Set the progrees control to normal or paused state.
void CCProgressCtrl_s1Dlg::OnSetstateNormal()
{
m_progressCtrl.SetState(PBST_NORMAL);
}
void CCProgressCtrl_s1Dlg::OnSetstatePaused()
{
m_progressCtrl.SetState(PBST_PAUSED);
}
CProgressCtrl::SetStep
Задает шаг для элемента управления индикатора хода выполнения.
int SetStep(int nStep);
Параметры
nStep
Увеличение нового шага.
Возвращаемое значение
Предыдущий шаг увеличивается.
Замечания
Шаг увеличивается— это сумма, по которой вызов CProgressCtrl::StepIt
для увеличения текущей позиции индикатора хода выполнения.
Шаг по умолчанию — 10.
Пример
CProgressCtrl myCtrl;
// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
IDC_PROGRESSCTRL);
// Set the size to be 1/10 of the total range.
int nLower, nUpper;
myCtrl.GetRange(nLower, nUpper);
myCtrl.SetStep((nUpper - nLower) / 10);
CProgressCtrl::StepIt
Перемещает текущую позицию для элемента управления индикатора хода выполнения на шаге и перерисовывает полосу, чтобы отразить новую позицию.
int StepIt();
Возвращаемое значение
Предыдущая позиция элемента управления индикатора выполнения.
Замечания
Шаг увеличивается с помощью CProgressCtrl::SetStep
функции-члена.
Пример
CProgressCtrl myCtrl;
// Create a child progress control.
myCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 30), pParentWnd,
IDC_PROGRESSCTRL);
// Advance the position to the next step.
myCtrl.StepIt();