Classe CProgressCtrl
Fornece a funcionalidade do controle de barra de progresso comum do Windows.
Sintaxe
class CProgressCtrl : public CWnd
Membros
Construtores públicos
Nome | Descrição |
---|---|
CProgressCtrl::CProgressCtrl |
Constrói um objeto CProgressCtrl . |
Métodos públicos
Nome | Descrição |
---|---|
CProgressCtrl::Create |
Cria um controle de barra de progresso e o anexa a um objeto CProgressCtrl . |
CProgressCtrl::CreateEx |
Cria um controle de progresso com os estilos estendidos especificados do Windows e o anexa a um objeto CProgressCtrl . |
CProgressCtrl::GetBarColor |
Obtém a cor da barra de indicadores de progresso para o controle da barra de progresso atual. |
CProgressCtrl::GetBkColor |
Obtém a cor da tela 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 intervalo do controle da barra de progresso. |
CProgressCtrl::GetState |
Obtém o estado do controle da barra de progresso atual. |
CProgressCtrl::GetStep |
Recupera o incremento de etapa da barra de progresso do controle da barra de progresso atual. |
CProgressCtrl::OffsetPos |
Avança a posição atual de um controle de barra de progresso por um incremento especificado e redesenha a barra para refletir a nova posição. |
CProgressCtrl::SetBarColor |
Define a cor da barra de indicadores de progresso no controle da barra de progresso atual. |
CProgressCtrl::SetBkColor |
Define a cor da tela de fundo da barra de progresso. |
CProgressCtrl::SetMarquee |
Ativa ou desativa o modo de letreiro do controle da barra de progresso atual. |
CProgressCtrl::SetPos |
Define a posição atual de um controle de barra de progresso e redesenha a barra para refletir a nova posição. |
CProgressCtrl::SetRange |
Define os intervalos mínimo e máximo para um controle de barra de progresso e redesenha a barra para refletir os novos intervalos. |
CProgressCtrl::SetState |
Define o estado do controle da barra de progresso atual. |
CProgressCtrl::SetStep |
Especifica o incremento de etapa para um controle de barra de progresso. |
CProgressCtrl::StepIt |
Avança a posição atual de um controle de barra de progresso pelo incremento de etapa (consulte SetStep ) e redesenha a barra para refletir a nova posição. |
Comentários
O controle da barra de progresso é uma janela que um aplicativo pode usar para indicar o progresso de uma operação demorada. Ele consiste em um retângulo que é gradualmente preenchido da esquerda para a direita com a cor de realce do sistema à medida que uma operação progride.
Um controle de barra de progresso tem um intervalo e uma posição atual. O intervalo representa a duração total da operação e a posição atual representa o progresso que o aplicativo fez para concluir a operação. O procedimento de janela usa o intervalo e a posição atual para determinar a porcentagem da barra de progresso a ser preenchida com a cor de realce. Como os valores de posição atual e intervalo são expressos como inteiros com sinal, o intervalo possível de valores da posição atual é de -2.147.483.648 a 2.147.483.647, inclusive.
Para obter mais informações sobre como usar CProgressCtrl
, consulte Controles e Usar CProgressCtrl
.
Hierarquia de herança
CProgressCtrl
Requisitos
Cabeçalho: afxcmn.h
CProgressCtrl::CProgressCtrl
Constrói um objeto CProgressCtrl
.
CProgressCtrl();
Comentários
Depois de construir o objeto CProgressCtrl
, chame CProgressCtrl::Create
para criar o controle da barra de progresso.
Exemplo
// 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 controle de barra de progresso e o anexa a um objeto CProgressCtrl
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parâmetros
dwStyle
Especifica o estilo do controle da barra de progresso. Aplique qualquer combinação de estilos de janela descritos em CreateWindow
no SDK do Windows, além dos seguintes estilos de controle de barra de progresso, ao controle:
PBS_VERTICAL
Exibe informações de progresso verticalmente, de cima para baixo. Sem esse sinalizador, o controle da barra de progresso é exibido horizontalmente, da esquerda para a direita.PBS_SMOOTH
Exibe o preenchimento gradual e suave no controle da barra de progresso. Sem esse sinalizador, o controle será preenchido com blocos.
rect
Especifica o tamanho e a posição do controle da barra de progresso. Pode ser um objeto CRect
ou uma estrutura RECT
. Como o controle deve ser uma janela filho, as coordenadas especificadas são relativas à área do cliente do pParentWnd
.
pParentWnd
Especifica a janela pai do controle da barra de progresso, geralmente um CDialog
. Não pode ser NULL.
nID
Especifica a ID do controle da barra de progresso.
Valor de retorno
TRUE se o objeto CProgressCtrl
for criado com êxito; caso contrário, FALSE.
Comentários
Um objeto CProgressCtrl
é construído em duas etapas. Primeiro, chame o construtor, que criará o objeto CProgressCtrl
e, em seguida, chame Create
, que criará o controle da barra de progresso.
Exemplo
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 controle (uma janela filho) e o associa ao objeto CProgressCtrl
.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parâmetros
dwExStyle
Especifica o estilo estendido do controle que está sendo criado. Para obter uma lista de estilos estendidos do Windows, consulte o parâmetro dwExStyle
para CreateWindowEx
no SDK do Windows.
dwStyle
Especifica o estilo do controle da barra de progresso. Aplique qualquer combinação de estilos de janela descritos em CreateWindow
no SDK do Windows.
rect
Uma referência a uma estrutura RECT
que descreve o tamanho e a posição da janela a ser criada, nas coordenadas de cliente de pParentWnd
.
pParentWnd
Um ponteiro para a janela que é pai do controle.
nID
A ID da janela filho do controle.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0.
Comentários
Use CreateEx
, em vez de Create
, para aplicar estilos estendidos do Windows, especificados pelo prefácio WS_EX_
de estilos estendidos do Windows.
CProgressCtrl::GetBarColor
Obtém a cor da barra de indicadores de progresso para o controle da barra de progresso atual.
COLORREF GetBarColor() const;
Valor de retorno
A cor da barra de progresso atual, representada como um valor COLORREF
, ou CLR_DEFAULT
se a cor da barra de indicadores de progresso for a cor padrão.
Comentários
Esse método envia a mensagem PBM_GETBARCOLOR
, que é descrita no SDK do Windows.
CProgressCtrl::GetBkColor
Obtém a cor da tela de fundo da barra de progresso atual.
COLORREF GetBkColor() const;
Valor de retorno
A cor da tela de fundo da barra de progresso atual, representada como um valor COLORREF
.
Comentários
Esse método envia a mensagem PBM_GETBKCOLOR
, 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 controle da barra de progresso.
Comentários
A posição do controle da barra de progresso não é o local físico na tela, mas sim entre o intervalo superior e inferior indicado em SetRange
.
Exemplo
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 atuais, ou intervalo, do controle 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 controle da barra de progresso.
nUpper
Uma referência a um inteiro que recebe o limite superior do controle da barra de progresso.
Comentários
Essa função copia os valores dos limites inferior e superior para os inteiros referenciados por nLower
e nUpper
, respectivamente.
Exemplo
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 controle da barra de progresso atual.
int GetState() const;
Valor de retorno
O estado do controle da barra de progresso atual, que é um dos seguintes valores:
Valor | Estado |
---|---|
PBST_NORMAL | Em andamento |
PBST_ERROR | Erro |
PBST_PAUSED | Pausada |
Comentários
Esse método envia a mensagem PBM_GETSTATE
, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável m_progressCtrl
, que é usada para acessar programaticamente o controle da barra de progresso. Essa variável será usada no próximo exemplo.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
O próximo exemplo de código recupera o estado do controle da barra de progresso atual.
// 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 etapa da barra de progresso do controle da barra de progresso atual.
int GetStep() const;
Valor de retorno
O incremento de etapa da barra de progresso.
Comentários
O incremento de etapa é o quanto uma chamada a CProgressCtrl::StepIt
aumenta a posição atual da barra de progresso.
Esse método envia a mensagem PBM_GETSTEP
, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável m_progressCtrl
, que é usada para acessar programaticamente o controle da barra de progresso. Essa variável será usada no próximo exemplo.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
O próximo exemplo de código recupera o incremento de etapa do controle da barra de progresso atual.
// 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 controle 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
Valor para avançar a posição.
Valor de retorno
A posição anterior do controle da barra de progresso.
Exemplo
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 de indicadores de progresso no controle da barra de progresso atual.
COLORREF SetBarColor(COLORREF clrBar);
Parâmetros
clrBar
[in] Um valor COLORREF
que especifica a nova cor da barra de indicadores de progresso. Especifique CLR_DEFAULT
para fazer com que a barra de progresso use sua cor padrão.
Valor de retorno
A cor anterior da barra de indicadores de progresso, representada como um valor COLORREF
, ou CLR_DEFAULT
se a cor da barra de indicadores de progresso for a cor padrão.
Comentários
O método SetBarColor
define a cor da barra de progresso somente se um tema do Windows Vista não estiver em vigor.
Esse método envia a mensagem PBM_SETBARCOLOR
, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável m_progressCtrl
, que é usada para acessar programaticamente o controle da barra de progresso. Essa variável será usada no próximo exemplo.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
O exemplo de código a seguir 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 da tela de fundo da barra de progresso.
COLORREF SetBkColor(COLORREF clrNew);
Parâmetros
clrNew
Um valor COLORREF
que especifica a nova cor do plano de fundo. Especifique o valor CLR_DEFAULT
para usar a cor da tela de fundo padrão para a barra de progresso.
Valor de retorno
O valor COLORREF
que indica a cor anterior da tela de fundo ou CLR_DEFAULT
se a cor da tela de fundo é a cor padrão.
Exemplo
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 de letreiro do controle da barra de progresso atual.
BOOL SetMarquee(
BOOL fMarqueeMode,
int nInterval);
Parâmetros
fMarqueeMode
[in] TRUE
para ativar o modo de letreiro ou FALSE
para desativá-lo.
nInterval
[in] Tempo em milissegundos entre atualizações da animação de letreiro.
Valor de retorno
Esse método sempre retorna TRUE
.
Comentários
Quando o modo de letreiro está ativado, a barra de progresso é animada e rola como uma placa de letreiro de teatro.
Esse método envia a mensagem PBM_SETMARQUEE
, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável m_progressCtrl
, que é usada para acessar programaticamente o controle da barra de progresso. Essa variável será usada no próximo exemplo.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
O próximo exemplo de código é iniciado e interrompe a animação de rolagem do letreiro.
// 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 controle 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 controle da barra de progresso.
Valor de retorno
A posição anterior do controle da barra de progresso.
Comentários
A posição do controle da barra de progresso não é o local físico na tela, mas sim entre o intervalo superior e inferior indicado em SetRange
.
Exemplo
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 intervalo do controle 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).
Comentários
A função membro SetRange32
define o intervalo de 32 bits para o controle de progresso.
Exemplo
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 controle da barra de progresso atual.
int SetState(int iState);
Parâmetros
iState
[in] O estado para definir a barra de progresso. Use um dos seguintes valores:
PBST_NORMAL
– Em andamentoPBST_ERROR
– ErroPBST_PAUSED
– Em pausa
Valor de retorno
O estado anterior do controle da barra de progresso atual.
Comentários
Esse método envia a mensagem PBM_SETSTATE
, que é descrita no SDK do Windows.
Exemplo
O primeiro exemplo de código define a variável m_progressCtrl
, que é usada para acessar programaticamente o controle da barra de progresso. Essa variável será usada no próximo exemplo.
// Variable to access the progress control
CProgressCtrl m_progressCtrl;
O exemplo de código a seguir define o estado do controle da barra de progresso atual como Em pausa ou Em andamento.
// 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 etapa para um controle de barra de progresso.
int SetStep(int nStep);
Parâmetros
nStep
Incremento de nova etapa.
Valor de retorno
O incremento de etapa anterior.
Comentários
O incremento de etapa é o quanto uma chamada a CProgressCtrl::StepIt
aumenta a posição atual da barra de progresso.
O incremento de etapa padrão é 10.
Exemplo
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 de um controle de barra de progresso pelo incremento de etapa e redesenha a barra para refletir a nova posição.
int StepIt();
Valor de retorno
A posição anterior do controle da barra de progresso.
Comentários
O incremento de etapa é definido pela função membro CProgressCtrl::SetStep
.
Exemplo
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();