Partilhar via


CProgressCtrl Classe

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Fornece a funcionalidade do controlo comum da barra de progresso do Windows.

Sintaxe

class CProgressCtrl : public CWnd

Membros

Construtores Públicos

Nome Description
CProgressCtrl::CProgressCtrl Constrói um CProgressCtrl objeto.

Métodos Públicos

Nome Description
CProgressCtrl::Create Cria um controlo na barra de progresso e liga-o a um CProgressCtrl objeto.
CProgressCtrl::CreateEx Cria um controlo de progresso com os estilos estendidos do Windows especificados e anexa-o a um CProgressCtrl objeto.
CProgressCtrl::GetBarColor Recebe a cor da barra indicadora de progresso do controlo atual da barra.
CProgressCtrl::GetBkColor Fica com a cor de fundo da barra de progresso atual.
CProgressCtrl::GetPos Obtém a posição atual da barra de progresso.
CProgressCtrl::GetRange Obtém os limites inferior e superior do alcance do controlo da barra de progresso.
CProgressCtrl::GetState Obtém o estado do controlo atual da barra de progresso.
CProgressCtrl::GetStep Recupera o incremento de passo para a barra de progresso do controlo atual da barra.
CProgressCtrl::OffsetPos Avança a posição atual de um controlo de barra de progresso num incremento especificado e redesenha a barra para refletir a nova posição.
CProgressCtrl::SetBarColor Define a cor da barra indicadora de progresso no controlo atual da barra de progresso.
CProgressCtrl::SetBkColor Define a cor de fundo da barra de progresso.
CProgressCtrl::SetMarquee Ativa ou desativa o modo marquee para o controlo atual da barra de progresso.
CProgressCtrl::SetPos Define a posição atual para o controlo da barra de progresso e volta a desenhar a barra para refletir a nova posição.
CProgressCtrl::SetRange Define os intervalos mínimo e máximo para um controlo na barra de progresso e redesenha a barra para refletir os novos intervalos.
CProgressCtrl::SetState Define o estado do controlo atual da barra de progresso.
CProgressCtrl::SetStep Especifica o incremento de passo para um controlo de barra de progresso.
CProgressCtrl::StepIt Avança a posição atual para um controlo da barra de progresso pelo incremento de passo (ver SetStep) e redesenha a barra para refletir a nova posição.

Observações

Um controlo de barra de progresso é uma janela que uma aplicação pode usar para indicar o progresso de uma operação longa. Consiste num retângulo que é gradualmente preenchido, da esquerda para a direita, com a cor de destaque do sistema à medida que a operação avança.

Um controlo de barra de progresso tem um alcance e uma posição atual. O intervalo representa a duração total da operação, e a posição atual representa o progresso que a aplicação fez na conclusão da operação. O procedimento da janela usa o intervalo e a posição atual para determinar a percentagem da barra de progresso a preencher com a cor de destaque. Como o intervalo e os valores atuais da posição são expressos como inteiros com sinal, o intervalo possível dos valores atuais da posição é de -2.147.483.648 a 2.147.483.647, inclusive.

Para mais informações sobre a utilização CProgressCtrlde , veja Controlos e Utilização CProgressCtrlde .

Hierarquia de herança

CObject

CCmdTarget

CWnd

CProgressCtrl

Requerimentos

Cabeçalho:afxcmn.h

CProgressCtrl::CProgressCtrl

Constrói um CProgressCtrl objeto.

CProgressCtrl();

Observações

Depois de construir o CProgressCtrl objeto, chame CProgressCtrl::Create para criar o controlo da barra de progresso.

Example

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

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

CProgressCtrl::Create

Cria um controlo na barra de progresso e liga-o a um CProgressCtrl objeto.

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

Parâmetros

dwStyle
Especifica o estilo do controlo da barra de progresso. Aplique qualquer combinação de estilos de janelas descritos no CreateWindow SDK do Windows, além dos seguintes estilos de controlo na barra de progresso, ao controlo:

  • PBS_VERTICAL Mostra a informação de progresso verticalmente, de cima a baixo. Sem esta bandeira, o controlo da barra de progresso é exibido horizontalmente, da esquerda para a direita.

  • PBS_SMOOTH Mostra preenchimento gradual e suave no controlo da barra de progresso. Sem esta bandeira, o controlo enche-se com blocos.

rect
Especifica o tamanho e a posição do controlo da barra de progresso. Pode ser um CRect objeto ou uma RECT estrutura. Como o controlo deve ser uma janela filho, as coordenadas especificadas são relativas à área cliente do pParentWnd.

pParentWnd
Especifica a janela pai do controlo da barra de progresso, normalmente um CDialog. Não pode ser NULL.

nID
Especifica o ID do controlo da barra de progresso.

Valor de retorno

TRUE se o CProgressCtrl objeto for criado com sucesso; caso contrário, FALSE.

Observações

Constroem um CProgressCtrl objeto em dois passos. Primeiro, chamar o construtor, que cria o CProgressCtrl objeto, e depois chamar Create, que cria o controlo da barra de progresso.

Example

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

Cria um controlo (uma janela filha) e associa-o ao CProgressCtrl objeto.

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

Parâmetros

dwExStyle
Especifica o estilo estendido do controlo que está a ser criado. Para uma lista de estilos extensos do Windows, consulte o dwExStyle parâmetro para CreateWindowEx no SDK do Windows.

dwStyle
Especifica o estilo do controlo da barra de progresso. Aplique qualquer combinação de estilos de janelas descrita no CreateWindow SDK do Windows.

rect
Uma referência a uma RECT estrutura que descreve o tamanho e a posição da janela a ser criada, em coordenadas cliente de pParentWnd.

pParentWnd
Um apontador para a janela que é o pai do controlo.

nID
O ID da janela criança do controlo.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Use CreateEx em vez de Create para aplicar estilos estendidos do Windows, especificados pelo prefácio WS_EX_de estilo estendido do Windows .

CProgressCtrl::GetBarColor

Recebe a cor da barra indicadora de progresso do controlo atual da barra.

COLORREF GetBarColor() const;

Valor de retorno

A cor da barra de progresso atual, representada como um COLORREF valor, ou CLR_DEFAULT se a cor indicadora da barra de progresso for a cor padrão.

Observações

Este método envia a PBM_GETBARCOLOR mensagem, que é descrita no SDK do Windows.

CProgressCtrl::GetBkColor

Fica com a cor de fundo da barra de progresso atual.

COLORREF GetBkColor() const;

Valor de retorno

A cor de fundo da barra de progresso atual, representada como um COLORREF valor.

Observações

Este método envia a PBM_GETBKCOLOR mensagem, que é descrita no SDK do Windows.

CProgressCtrl::GetPos

Recupera a posição atual da barra de progresso.

int GetPos();

Valor de retorno

A posição do controlo da barra de progresso.

Observações

A posição do controlo da barra de progresso não é a localização física no ecrã, mas sim entre a gama superior e inferior indicada em SetRange.

Example

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

Obtém os limites inferior e superior, ou alcance, atuais do controlo da barra de progresso.

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

Parâmetros

nLower
Uma referência a um inteiro que recebe o limite inferior do controlo da barra de progresso.

nUpper
Uma referência a um inteiro que recebe o limite superior do controlo da barra de progresso.

Observações

Esta função copia os valores dos limites inferior e superior dos inteiros referenciados por nLower e nUpper, respetivamente.

Example

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

Obtém o estado do controlo atual da barra de progresso.

int GetState() const;

Valor de retorno

O estado do controlo atual da barra de progresso, que é um dos seguintes valores:

Valor Estado
PBST_NORMAL Em curso
PBST_ERROR Erro
PBST_PAUSED Em pausa

Observações

Este método envia a PBM_GETSTATE mensagem, que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_progressCtrl, que é usada para aceder programaticamente ao controlo da barra de progresso. Esta variável é usada no exemplo seguinte.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

O próximo exemplo de código recupera o estado do controlo atual da barra de progresso.

// 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 o incremento de passo para a barra de progresso do controlo atual da barra.

int GetStep() const;

Valor de retorno

O incremento gradual da barra de progresso.

Observações

O incremento de passo é o valor pelo qual uma chamada para CProgressCtrl::StepIt aumenta a posição atual da barra de progresso.

Este método envia a PBM_GETSTEP mensagem, que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_progressCtrl, que é usada para aceder programaticamente ao controlo da barra de progresso. Esta variável é usada no exemplo seguinte.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

O próximo exemplo de código recupera o incremento de passo do controlo atual da barra de progresso.

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

Avança a posição atual do controlo da barra de progresso pelo incremento especificado por nPos e redesenha a barra para refletir a nova posição.

int OffsetPos(int nPos);

Parâmetros

nPos
Montante para avançar na posição.

Valor de retorno

A posição anterior do controlo da barra de progresso.

Example

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

Define a cor da barra indicadora de progresso no controlo atual da barra de progresso.

COLORREF SetBarColor(COLORREF clrBar);

Parâmetros

clrBar
[dentro] Um COLORREF valor que especifica a nova cor da barra indicadora de progresso. Especifique CLR_DEFAULT para fazer a barra de progresso usar a cor predefinida.

Valor de retorno

A cor anterior da barra indicadora de progresso, representada como um COLORREF valor, ou CLR_DEFAULT se a cor da barra indicadora de progresso for a cor padrão.

Observações

O SetBarColor método define a cor da barra de progresso apenas se um tema do Windows Vista não estiver ativo.

Este método envia a PBM_SETBARCOLOR mensagem, que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_progressCtrl, que é usada para aceder programaticamente ao controlo da barra de progresso. Esta variável é usada no exemplo seguinte.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

O próximo exemplo de código altera a cor da barra de progresso para vermelho, verde, azul ou o padrão.

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

Define a cor de fundo da barra de progresso.

COLORREF SetBkColor(COLORREF clrNew);

Parâmetros

clrNew
Um COLORREF valor que especifica a nova cor de fundo. Especifique o CLR_DEFAULT valor para usar a cor de fundo padrão da barra de progresso.

Valor de retorno

O COLORREF valor que indica a cor de fundo anterior, ou CLR_DEFAULT se a cor de fundo for a cor padrão.

Example

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

Ativa ou desativa o modo marquee para o controlo atual da barra de progresso.

BOOL SetMarquee(
    BOOL fMarqueeMode,
    int nInterval);

Parâmetros

fMarqueeMode
[dentro] TRUE para ativar o modo marquee, ou FALSE para desligar o modo marquee.

nInterval
[dentro] Tempo em milissegundos entre as atualizações da animação do letreiro.

Valor de retorno

Este método devolve TRUEsempre .

Observações

Quando o modo marquee está ativado, a barra de progresso é animada e desliza como um letreiro numa tenda de cinema.

Este método envia a PBM_SETMARQUEE mensagem, que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_progressCtrl, que é usada para aceder programaticamente ao controlo da barra de progresso. Esta variável é usada no exemplo seguinte.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

O próximo exemplo de código inicia e para a animação de scroll da marquee.

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

Define a posição atual do controlo da barra de progresso conforme especificado por nPos e redesenha a barra para refletir a nova posição.

int SetPos(int nPos);

Parâmetros

nPos
Nova posição do controlo da barra de progresso.

Valor de retorno

A posição anterior do controlo da barra de progresso.

Observações

A posição do controlo da barra de progresso não é a localização física no ecrã, mas sim entre a gama superior e inferior indicada em SetRange.

Example

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

Define os limites superior e inferior do alcance do controlo da barra de progresso e redesenha a barra para refletir os novos intervalos.

void SetRange(
    short nLower,
    short nUpper);

void SetRange32(
    int nLower,
    int nUpper);

Parâmetros

nLower
Especifica o limite inferior do intervalo (o padrão é zero).

nUpper
Especifica o limite superior do intervalo (o padrão é 100).

Observações

A função SetRange32 membro define o intervalo de 32 bits para o controlo de progresso.

Example

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

Define o estado do controlo atual da barra de progresso.

int SetState(int iState);

Parâmetros

iState
[dentro] O estado para definir a barreira de progresso. Utilize um dos seguintes valores:

  • PBST_NORMAL - Em curso
  • PBST_ERROR - Erro
  • PBST_PAUSED - Pausado

Valor de retorno

O estado anterior do controlo atual da barra de progresso.

Observações

Este método envia a PBM_SETSTATE mensagem, que é descrita no SDK do Windows.

Example

O primeiro exemplo de código define a variável, m_progressCtrl, que é usada para aceder programaticamente ao controlo da barra de progresso. Esta variável é usada no exemplo seguinte.

// Variable to access the progress control
CProgressCtrl m_progressCtrl;

O próximo exemplo de código define o estado do controlo atual da barra de progresso para Paused ou Em Progresso.

// 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 o incremento de passo para um controlo de barra de progresso.

int SetStep(int nStep);

Parâmetros

nStep
Novo incremento de passos.

Valor de retorno

O incremento do passo anterior.

Observações

O incremento de passo é o valor pelo qual uma chamada para CProgressCtrl::StepIt aumenta a posição atual da barra de progresso.

O incremento padrão de degraus é 10.

Example

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

Avança a posição atual para um controlo da barra de progresso pelo incremento de passo e volta a desenhar a barra para refletir a nova posição.

int StepIt();

Valor de retorno

A posição anterior do controlo da barra de progresso.

Observações

O incremento de escalões é definido pela CProgressCtrl::SetStep função elemento.

Example

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

Consulte também

Exemplo MFC CMNCTRL2
CWnd Classe
Gráfico de Hierarquia