Sobre controles de barra de progresso

Uma barra de progresso é uma janela que um aplicativo pode usar para indicar o progresso de uma operação longa.

Ele consiste em um retângulo que é animado à medida que uma operação progride.

A ilustração a seguir mostra uma barra de progresso que não usa estilos visuais.

screen shot of a progress bar that adds rectangles in a line to indicate progress

A ilustração a seguir mostra uma barra de progresso usando estilos visuais. A aparência do controle irá variar dependendo do sistema operacional e do tema selecionado. Para obter mais informações, consulte Estilos visuais.

screen shot of a progress bar that lengthens an animated green rectangle to indicate progress

Mais informações estão contidas nos seguintes títulos.

Usando barras de progresso

Você pode criar uma barra de progresso usando a função CreateWindowEx, especificando a classe de janela PROGRESS_CLASS. Essa classe de janela é registrada quando a DLL de controles comuns é carregada. Para obter mais informações, consulte Sobre controles comuns.

O controle também está disponível na caixa de ferramentas do Microsoft Visual Studio, onde é chamado de controle de progresso.

Faixa e posição atual

O intervalo de uma barra de progresso representa toda a duração 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.

Se você não definir os valores de intervalo, o sistema definirá o valor mínimo como 0 e o valor máximo como 100. Você pode ajustar o intervalo para inteiros convenientes usando a mensagem PBM_SETRANGE.

Uma barra de progresso fornece várias mensagens que você pode usar para definir a posição atual. A mensagem PBM_SETPOS define a posição para um determinado valor. A mensagem PBM_DELTAPOS avança a posição adicionando um valor especificado à posição atual.

A mensagem PBM_SETSTEP permite especificar um incremento de etapa para uma barra de progresso. Posteriormente, sempre que você enviar a mensagem PBM_STEPIT para a barra de progresso, a posição atual avançará pelo incremento especificado. Por padrão, o incremento da etapa é definido como 10.

Processamento de mensagens da barra de progresso padrão

Esta seção descreve as mensagens manipuladas pelo procedimento de janela para a classe PROGRESS_CLASS.

Mensagem Processamento realizado
WM_CREATE Aloca e inicializa uma estrutura inicial.
WM_DESTROY Libera todos os recursos associados à barra de progresso.
WM_ERASEBKGND Desenha o plano de fundo e as bordas da barra de progresso.
WM_GETFONT Retorna o identificador para a fonte atual. A barra de progresso atualmente não desenha texto, portanto, o envio dessa mensagem não tem efeito sobre o controle.
WM_PAINT Desenha a barra de progresso. Se o parâmetro wParam for não-NULL, o controle assume que o valor é um HDC e pinta usando esse contexto de dispositivo.
WM_SETFONT Salva o identificador para a nova fonte e retorna o identificador para a fonte anterior. A barra de progresso atualmente não desenha texto, portanto, o envio dessa mensagem não tem efeito sobre o controle.

 

Estilo Letreiro

Ao criar o controle da barra de progresso com o estilo PBS_MARQUEE , você pode animá-lo de uma maneira que mostre a atividade, mas não indique qual proporção da tarefa está concluída. A parte realçada da barra de progresso se move repetidamente ao longo do comprimento da barra. Você pode iniciar e parar a animação e controlar sua velocidade, enviando a mensagem PBM_SETMARQUEE. As barras de progresso do letreiro não têm um intervalo ou posição.

A ilustração a seguir mostra uma barra de progresso no modo de letreiro. A parte destacada se move pela barra.

screen shot of a progress bar that moves a green highlight across a gray rectangle to indicate progress