Compartir a través de


Clase CProgressCtrl

Proporciona la funcionalidad del control de barra de progreso común de Windows.

Sintaxis

class CProgressCtrl : public CWnd

Miembros

Constructores públicos

Nombre Descripción
CProgressCtrl::CProgressCtrl Construye un objeto CProgressCtrl.

Métodos públicos

Nombre Descripción
CProgressCtrl::Create Crea un control de la barra de progreso y lo adjunta a un objeto CProgressCtrl.
CProgressCtrl::CreateEx Crea un control de la barra de progreso con los estilos extendidos de Windows especificados y lo adjunta a un objeto CProgressCtrl.
CProgressCtrl::GetBarColor Establece el color de progreso actual de la barra de progreso actual del control.
CProgressCtrl::GetBkColor Esta función se usa para establecer el color de fondo de la barra de progreso actual.
CProgressCtrl::GetPos Obtiene la posición actual de la barra de progreso.
CProgressCtrl::GetRange Obtiene los límites inferiores y superiores del intervalo del control de barra de progreso.
CProgressCtrl::GetState Obtiene el estado del control de la barra de progreso actual.
CProgressCtrl::GetStep Recupera el incremento de paso para la barra de progreso del control de barra de progreso actual.
CProgressCtrl::OffsetPos Desplaza la posición actual de un control de barra de progreso por un incremento especificado y vuelve a dibujar la barra para reflejar la nueva posición.
CProgressCtrl::SetBarColor Obtiene el color de progreso actual de la barra de progreso actual del control.
CProgressCtrl::SetBkColor Establece el color de fondo de la barra de progreso.
CProgressCtrl::SetMarquee Activa o desactiva el modo de marquesina para el control de barra de progreso actual.
CProgressCtrl::SetPos Establece la posición actual de un control de barra de progreso y vuelve a dibujar la barra para reflejar la nueva posición.
CProgressCtrl::SetRange Establece los intervalos mínimo y máximo de un control de barra de progreso y vuelve a dibujar la barra para reflejar los nuevos intervalos.
CProgressCtrl::SetState Establece el estado del control de la barra de progreso actual.
CProgressCtrl::SetStep Especifica el incremento de paso para un control de barra de progreso.
CProgressCtrl::StepIt Desplaza la posición actual de un control de barra de progreso por un incremento paso a paso (consulte SetStep) y vuelve a dibujar la barra para reflejar la nueva posición.

Comentarios

El la ventana de control de la barra de progreso es una aplicación puede usar para indicar visualmente el progreso de una operación de larga duración. Está compuesto de un rectángulo que se rellena gradualmente, de izquierda a derecha, con el color de resaltado del sistema a medida que una operación progresa.

El control de la barra de progreso tiene un intervalo y una posición actual. El intervalo representa la duración total de la operación y la posición actual representa el progreso realizado por la aplicación para completar la operación. El procedimiento de ventana usa el intervalo y la posición actual para determinar el porcentaje de la barra de progreso que se va a rellenar con el color de resaltado. Dado que los valores de rango y posición actual se expresan como enteros con signo, el intervalo posible de valores de posición actual es de -2.147.483.648 a 2.147.483.647 inclusive.

Para obtener más información sobre el uso de la clase CProgressCtrl, consulte Controles y Uso de CProgressCtrl.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CProgressCtrl

Requisitos

Encabezado: afxcmn.h

CProgressCtrl::CProgressCtrl

Construye un objeto CProgressCtrl.

CProgressCtrl();

Comentarios

Después de construir el objeto CProgressCtrl, llame a CProgressCtrl::Create para crear el control de barra de progreso.

Ejemplo

// Create a progress control object on the stack.
CProgressCtrl myCtrl;

// Create a progress control object on the heap.
CProgressCtrl *pmyCtrl = new CProgressCtrl;

CProgressCtrl::Create

Crea un control de la barra de progreso y lo adjunta a un objeto CProgressCtrl.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parámetros

dwStyle
Especifica el estilo del control de barra de progreso. Aplique cualquier combinación de estilos de ventana descritos en CreateWindow en Windows SDK, además de los siguientes estilos de control de barra de progreso, al control:

  • PBS_VERTICAL Muestra la información de progreso verticalmente, de arriba abajo. Sin esta marca, el control de barra de progreso se muestra horizontalmente, de izquierda a derecha.

  • PBS_SMOOTH Muestra el relleno gradual y suave en el control de barra de progreso. Sin esta marca, el control se rellenará con bloques.

rect
Especifica el tamaño y la posición del control de barra de progreso. Puede ser un objeto CRect o una estructura RECT. Dado que el control debe ser una ventana secundaria, las coordenadas especificadas son relativas al área cliente de pParentWnd.

pParentWnd
El valor de este parámetro se usa para especificar la ventana primaria del control de información sobre la barra de progreso, que suele ser un elemento CDialog. No debe ser NULL.

nID
Especifica el id. del control de barra de progreso.

Valor devuelto

El valor TRUE si el objeto CProgressCtrl se crea correctamente; en caso contrario, será FALSE.

Comentarios

El objeto CProgressCtrl se construye en dos pasos. En primer lugar, llama al constructor, que crea el objeto CProgressCtrl y, a continuación, llama a Create, que crea el control de barra de progreso.

Ejemplo

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

Esta función puede usarse para crear un control (una ventana secundaria) y asociarlo con el objeto CProgressCtrl.

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parámetros

dwExStyle
El valor de este parámetro se usa para especificar el estilo extendido del control que se va a crear. Para obtener una lista de estilos extendidos de Windows, consulte el parámetro dwExStyle de la función CreateWindowEx en Windows SDK.

dwStyle
Especifica el estilo del control de barra de progreso. Aplique cualquier combinación de estilos de ventana descritos en CreateWindow en Windows SDK.

rect
Una referencia a una estructura RECT describiendo el tamaño y la posición de la ventana a crear, en las coordenadas cliente de pParentWnd.

pParentWnd
Un puntero a la ventana que constituye el elemento primario del control.

nID
El identificador de ventana secundaria del control.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Usa la función CreateEx, en lugar de Create, para aplicar estilos extendidos de Windows. Estos se especifican en el prefacio de estilo extendido WS_EX_ de Windows.

CProgressCtrl::GetBarColor

Establece el color de progreso actual de la barra de progreso actual del control.

COLORREF GetBarColor() const;

Valor devuelto

Color de la barra de progreso actual, representada como un valor COLORREF, o CLR_DEFAULT si el color de la barra del indicador de progreso es el color predeterminado.

Comentarios

Al usar este método, se envía el mensaje PBM_GETBARCOLOR, que se describe en Windows SDK.

CProgressCtrl::GetBkColor

Esta función se usa para establecer el color de fondo de la barra de progreso actual.

COLORREF GetBkColor() const;

Valor devuelto

Color de fondo de la barra de progreso actual, representado como un valor COLORREF.

Comentarios

Al usar este método, se envía el mensaje PBM_GETBKCOLOR, que se describe en Windows SDK.

CProgressCtrl::GetPos

Recupera la posición actual de la barra de progreso.

int GetPos();

Valor devuelto

La posición del control de la barra de progreso.

Comentarios

La posición del control de barra de progreso no es la ubicación física en la pantalla, sino que se encuentra entre el intervalo superior e inferior indicado en SetRange.

Ejemplo

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

Obtiene los límites actuales inferiores y superiores, o el intervalo del control de barra de progreso.

void GetRange(
    int& nLower,
    int& nUpper);

Parámetros

nLower
Referencia a un entero que recibe el límite inferior del control de la barra de progreso.

nUpper
Referencia a un entero que recibe el límite superior del control de la barra de progreso.

Comentarios

Esta función copia los valores de los límites inferior y superior en los enteros a los que hace referencia nLower y nUpper, respectivamente.

Ejemplo

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

Obtiene el estado del control de la barra de progreso actual.

int GetState() const;

Valor devuelto

Estado del control de barra de progreso actual, que es uno de los siguientes valores:

Valor Estado
PBST_NORMAL En curso
PBST_ERROR Error
PBST_PAUSED En pausa

Comentarios

Al usar este método, se envía el mensaje PBM_GETSTATE, que se describe en Windows SDK.

Ejemplo

El primer ejemplo de código define la variable, m_progressCtrl, que se utiliza para acceder mediante programación al control de barra de progreso. Esta variable se utiliza en el siguiente ejemplo.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

El siguiente ejemplo de código recupera el estado del control de la barra de progreso actual.

// 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

Recupera el incremento de paso para la barra de progreso del control de barra de progreso actual.

int GetStep() const;

Valor devuelto

Incremento de paso de la barra de progreso.

Comentarios

El incremento de paso es la cantidad que se incrementa la posición actual de la barra de progreso con cada llamada a CProgressCtrl::StepIt.

Al usar este método, se envía el mensaje PBM_GETSTEP, que se describe en Windows SDK.

Ejemplo

El primer ejemplo de código define la variable, m_progressCtrl, que se utiliza para acceder mediante programación al control de barra de progreso. Esta variable se utiliza en el siguiente ejemplo.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

El siguiente ejemplo de código recupera el incremento de paso del control de la barra de progreso actual.

// 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

Desplaza la posición actual de un control de barra de progreso por un incremento especificado por nPos y vuelve a dibujar la barra para reflejar la nueva posición.

int OffsetPos(int nPos);

Parámetros

nPos
Cantidad para avanzar la posición.

Valor devuelto

La posición previa del control de la barra de progreso.

Ejemplo

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

Obtiene el color de progreso actual de la barra de progreso actual del control.

COLORREF SetBarColor(COLORREF clrBar);

Parámetros

clrBar
[in] Valor COLORREF que especifica el nuevo color de la barra de indicador de progreso. Especifique CLR_DEFAULT para que la barra de progreso use su color predeterminado.

Valor devuelto

Color previo de la barra de progreso de indicador, representada como un valor COLORREF, o CLR_DEFAULT si el color de la barra del indicador de progreso es el color predeterminado.

Comentarios

El método SetBarColor establece el color de la barra de progreso solo si un tema de Windows Vista no está en vigor.

Al usar este método, se envía el mensaje PBM_SETBARCOLOR, que se describe en Windows SDK.

Ejemplo

El primer ejemplo de código define la variable, m_progressCtrl, que se utiliza para acceder mediante programación al control de barra de progreso. Esta variable se utiliza en el siguiente ejemplo.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

En el ejemplo de código siguiente se cambia el color de la barra de progreso a rojo, verde, azul o predeterminado.

// 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

Establece el color de fondo de la barra de progreso.

COLORREF SetBkColor(COLORREF clrNew);

Parámetros

clrNew
Un valor COLORREF que especifica el nuevo color de fondo. Especifique el valor CLR_DEFAULT para usar el color de fondo predeterminado para la barra de progreso.

Valor devuelto

El valor COLORREF que indica el color de fondo anterior o si el color de fondo de CLR_DEFAULT es el color predeterminado.

Ejemplo

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

Activa o desactiva el modo de marquesina para el control de barra de progreso actual.

BOOL SetMarquee(
    BOOL fMarqueeMode,
    int nInterval);

Parámetros

fMarqueeMode
[in] TRUE para activar el modo de marquesina o FALSE para desactivar el modo de marquesina.

nInterval
[in] Tiempo en milisegundos entre las actualizaciones de la animación de marquesina.

Valor devuelto

Este método devuelve siempre TRUE.

Comentarios

Cuando el modo de marquesina está activado, la barra de progreso se anima y se desplaza como un signo en una marquesina de teatro.

Al usar este método, se envía el mensaje PBM_SETMARQUEE, que se describe en Windows SDK.

Ejemplo

El primer ejemplo de código define la variable, m_progressCtrl, que se utiliza para acceder mediante programación al control de barra de progreso. Esta variable se utiliza en el siguiente ejemplo.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

El siguiente ejemplo de código inicia y detiene la animación de desplazamiento de la marca.

// 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

Establece la posición actual de un control de barra de progreso como especifica nPos y vuelve a dibujar la barra para reflejar la nueva posición.

int SetPos(int nPos);

Parámetros

nPos
La nueva posición del control de la barra de progreso.

Valor devuelto

La posición previa del control de la barra de progreso.

Comentarios

La posición del control de barra de progreso no es la ubicación física en la pantalla, sino que se encuentra entre el intervalo superior e inferior indicado en SetRange.

Ejemplo

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

Establece los límites superior e inferior del intervalo del control de barra de progreso y vuelve a dibujar la barra para reflejar los nuevos intervalos.

void SetRange(
    short nLower,
    short nUpper);

void SetRange32(
    int nLower,
    int nUpper);

Parámetros

nLower
Especifica el límite inferior del intervalo (el valor predeterminado es cero).

nUpper
Especifica el límite superior del intervalo (el valor predeterminado es 100).

Comentarios

La función miembro SetRange32 establece el intervalo de 32 bits para el control de progreso.

Ejemplo

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

Establece el estado del control de la barra de progreso actual.

int SetState(int iState);

Parámetros

iState
[in] El estado para establecer la barra de progreso. Utilice uno de los valores siguientes:

  • PBST_NORMAL: En curso
  • PBST_ERROR: Error
  • PBST_PAUSED: En pausa

Valor devuelto

El estado anterior del control de la barra de progreso actual.

Comentarios

Al usar este método, se envía el mensaje PBM_SETSTATE, que se describe en Windows SDK.

Ejemplo

El primer ejemplo de código define la variable, m_progressCtrl, que se utiliza para acceder mediante programación al control de barra de progreso. Esta variable se utiliza en el siguiente ejemplo.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

El siguiente ejemplo de código establece el estado del control de la de barra de progreso actual como En pausa o En curso.

// 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

Especifica el incremento de paso para un control de barra de progreso.

int SetStep(int nStep);

Parámetros

nStep
Nuevo incremento de paso.

Valor devuelto

Incremento del paso anterior.

Comentarios

El incremento de paso es la cantidad que se incrementa con cada llamada a CProgressCtrl::StepIt la posición actual de la barra de progreso.

El incremento de paso predeterminado es 10.

Ejemplo

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

Desplaza la posición actual de un control de barra de progreso por un incremento paso a paso y vuelve a dibujar la barra para reflejar la nueva posición.

int StepIt();

Valor devuelto

La posición previa del control de la barra de progreso.

Comentarios

La función miembro CProgressCtrl::SetStep establece el incremento de paso.

Ejemplo

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();

Vea también

Ejemplo de MFCCMNCTRL2
CWnd (clase)
Gráfico de jerarquías