Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma barra de deslocamento é um componente de interface de utilizador que contém um botão deslizante num canal e marcas de escala opcionais. Quando o usuário move o controle deslizante, usando o mouse ou as teclas de direção, a barra de controle envia mensagens de notificação para indicar a alteração.
- Gama de Seleção
- Mensagens da barra deslizante
- Mensagens de notificação do controlo deslizante
- Processamento padrão de mensagens do controlo deslizante
- Dicas de ferramentas do Trackbar
As barras de deslocamento são úteis quando se deseja que o utilizador selecione um valor inteiro não assinado discreto ou um conjunto de valores inteiros não assinados consecutivos dentro de um intervalo. Por exemplo, você pode usar uma barra de faixas para permitir que o usuário defina a taxa de repetição do teclado movendo o controle deslizante para uma determinada marca de seleção. A ilustração a seguir mostra uma barra deslizante típica.
O controle deslizante em uma barra de controle se move em incrementos que você especifica ao criá-lo. Os valores neste intervalo são referidos como unidades lógicas. Por exemplo, se se especificar que a barra de progressão deve ter unidades lógicas que variam de 0 a 5, o cursor pode ocupar apenas seis posições: uma posição à esquerda da barra e uma posição para cada incremento no intervalo. Normalmente, cada uma dessas posições é identificada por uma marca de tique; no entanto, o número de marcas de tique é arbitrário e pode ser menor do que o número de posições lógicas.
Você cria uma barra de controle usando a funçãoCreateWindowEx, especificando a classe TRACKBAR_CLASS window. Depois de criar uma barra de deslocamento, pode usar mensagens da barra de deslocamento para definir e recuperar muitas das suas propriedades. As alterações que você pode fazer incluem definir as posições mínima e máxima para o controle deslizante, desenhar marcas de escala, definir um intervalo de seleção e reposicionar o controle deslizante.
Intervalo de seleção
Se você criar uma barra de faixas com o estilo TBS_ENABLESELRANGE, poderá especificar um intervalo de seleção. A barra de deslocamento destaca o intervalo de seleção e exibe marcas de escala triangulares no início e no fim, conforme mostrado na ilustração a seguir.
O intervalo de seleção da barra de controle não afeta a sua funcionalidade de qualquer maneira. Cabe ao aplicativo implementar o intervalo. Você pode fazer isso de uma das seguintes maneiras:
- Use um intervalo de seleção para permitir que o usuário defina valores máximos e mínimos para algum parâmetro. Por exemplo, o usuário pode mover o controle deslizante para uma posição e, em seguida, clicar em um botão rotulado "Max". Em seguida, o aplicativo define o intervalo de seleção para mostrar os valores escolhidos pelo usuário.
- Limite o movimento do controle deslizante a um subintervalo predeterminado dentro do controle, manipulando a notificação WM_HSCROLL ou WM_VSCROLL e não permitindo qualquer movimento fora do intervalo de seleção. Você pode fazer isso, por exemplo, se o intervalo de valores disponíveis para o usuário pode mudar devido a outras escolhas que o usuário fez, ou de acordo com os recursos disponíveis.
Mensagens da barra deslizante
As unidades lógicas de uma barra de faixas são o conjunto de valores contíguos que a barra de faixas pode representar. Eles geralmente são definidos especificando o intervalo de valores possíveis com uma mensagem de TBM_SETRANGE assim que a barra de deslocamento é criada. Os aplicativos podem alterar dinamicamente o intervalo usando TBM_SETRANGE, TBM_SETRANGEMAXou TBM_SETRANGEMIN.
Para recuperar a posição do controle deslizante (ou seja, o valor que o usuário escolheu), use a mensagem TBM_GETPOS. Para definir a posição do controle deslizante, use a mensagem TBM_SETPOS.
Uma barra deslizante exibe automaticamente marcas de escala no início e no fim, a menos que se especifique o estilo TBS_NOTICKS. (No editor de recursos do Microsoft Visual Studio, isso significa definir a propriedade Tick Marks como Falso.) Pode usar o estilo TBS_AUTOTICKS para exibir automaticamente marcas de escala adicionais em intervalos regulares ao longo da barra deslizante. Por padrão, uma barra de trilha TBS_AUTOTICKS exibe uma marca de escala em cada incremento do intervalo da barra de faixa. Para especificar um intervalo diferente para as marcas de escala automáticas, envie a mensagem TBM_SETTICFREQ para a barra de faixas. Por exemplo, pode usar esta mensagem para exibir apenas 10 marcas num intervalo de 1 a 100.
Para definir a posição de uma única marca de verificação, envie a TBM_SETTIC mensagem. Uma barra de controle mantém uma matriz de valores DWORD que armazena a posição de cada marca de escala. A matriz não inclui a primeira e a última marcas de verificação, que a barra de faixas cria automaticamente. Você pode especificar um índice nessa matriz ao enviar a mensagem TBM_GETTIC para recuperar a posição da marca de escala correspondente. Como alternativa, pode enviar a mensagem TBM_GETPTICS para recuperar um ponteiro para a matriz. O número de elementos na matriz é igual a dois a menos do que a contagem de ticks retornada pela mensagem TBM_GETNUMTICS. Isso ocorre porque a contagem retornada por TBM_GETNUMTICS inclui a primeira e a última marcas de escala, que não estão incluídas na matriz. Para recuperar a posição física de uma marca de verificação, nas coordenadas do cliente da janela da barra de faixa, envie a mensagem TBM_GETTICPOS. A mensagem TBM_CLEARTICS remove todas, exceto a primeira e a última das marcas de escala de uma barra de controle deslizante.
O tamanho da linha de uma barra de rolagem determina a distância que o slider se move em resposta às teclas de seta do teclado, como SETA PARA A DIREITA ou SETA PARA BAIXO. Para recuperar ou definir o tamanho da linha, envie as mensagens TBM_GETLINESIZE e TBM_SETLINESIZE. A barra de deslocamento também envia os códigos de notificação TB_LINEUP e TB_LINEDOWN para a sua janela principal quando o utilizador pressiona as teclas de seta.
O tamanho da página de uma barra de rolagem determina até onde o controle deslizante se move em resposta a comandos do teclado, como a tecla PAGE UP ou PAGE DOWN, ou a comandos do rato, como cliques no trilho da barra de rolagem. Para recuperar ou definir o tamanho da página, envie as TBM_GETPAGESIZE e TBM_SETPAGESIZE mensagens. A barra de deslize também envia as notificações TB_PAGEUP e TB_PAGEDOWN para a janela pai quando recebe entrada do teclado ou mouse para rolar a página. Para obter mais informações, consulte Mensagens de notificação da barra de controle.
Uma aplicação pode enviar mensagens para recuperar as dimensões de um trackbar. A mensagem TBM_GETTHUMBRECT recupera o retângulo delimitador do controle deslizante. A mensagem TBM_GETTHUMBLENGTH recupera o comprimento do deslizador. A mensagem TBM_GETCHANNELRECT recupera o retângulo delimitador do canal da barra, que é a área sobre a qual o controle deslizante se move. Ele contém o realce quando um intervalo é selecionado. Se uma barra de deslocamento tiver o estilo TBS_FIXEDLENGTH, pode enviar a mensagem TBM_SETTHUMBLENGTH para alterar o comprimento do controle deslizante.
Você recupera ou define o intervalo de seleção enviando mensagens para o controlador deslizante. Use a mensagem TBM_SETSEL para definir as posições inicial e final de uma seleção. Para definir apenas a posição inicial ou apenas a posição final de uma seleção, envie uma mensagem TBM_SETSELSTART ou TBM_SETSELEND. Para recuperar as posições iniciais ou finais de um intervalo de seleção, envie uma mensagem TBM_GETSELSTART ou TBM_GETSELEND. Para limpar um intervalo de seleção e restaurar a barra de faixas para o intervalo original, envie a mensagem TBM_CLEARSEL.
Observação
É responsabilidade do aplicativo garantir que o usuário não possa selecionar valores fora do intervalo de seleção. O próprio controle não impede que o utilizador desloque o cursor para fora do intervalo.
Mensagens de notificação da barra de faixas
Uma barra de controle notifica a janela pai das ações do usuário enviando ao pai uma mensagem WM_HSCROLL ou WM_VSCROLL. Uma barra de faixas com o estilo TBS_HORZ envia mensagens WM_HSCROLL. Uma barra de deslocamento com o estilo TBS_VERT envia mensagens de WM_VSCROLL. A palavra de ordem baixa do wParam parâmetro de WM_HSCROLL ou WM_VSCROLL contém o código de notificação. Para os códigos de notificação TB_THUMBPOSITION e TB_THUMBTRACK, a palavra de ordem alta do parâmetro wParam especifica a posição do controle deslizante. Para todos os outros códigos de notificação, a palavra de ordem superior é zero; envie a mensagem TBM_GETPOS para determinar a posição do controle deslizante. O parâmetro lParam é o identificador da barra de faixas.
O sistema envia os códigos de notificação TB_BOTTOM, TB_LINEDOWN, TB_LINEUP e TB_TOP apenas quando o utilizador interage com um controlo deslizante usando o teclado. Os códigos de notificação TB_THUMBPOSITION e TB_THUMBTRACK só são enviados quando o usuário está usando o mouse. Os códigos de notificação TB_ENDTRACK, TB_PAGEDOWN e TB_PAGEUP são enviados em ambos os casos. A tabela a seguir lista os códigos de notificação da barra de controlo e os eventos (códigos de tecla virtual ou eventos de rato) que fazem com que as notificações dos códigos Virtual-Keysejam enviadas.
| Código de notificação | Motivo enviado |
|---|---|
| TB_BOTTOM | VK_END |
| TB_ENDTRACK | WM_KEYUP (o usuário liberou uma chave que enviou um código de chave virtual relevante) |
| TB_LINEDOWN | VK_RIGHT ou VK_DOWN |
| ALINHAMENTO_TB | VK_LEFT ou VK_UP |
| TB_PAGEDOWN | VK_NEXT (o usuário clicou no canal abaixo ou à direita do controle deslizante) |
| TB_PAGEUP | VK_PRIOR (o usuário clicou no canal acima ou à esquerda do controle deslizante) |
| TB_THUMBPOSITION | WM_LBUTTONUP seguindo um código de notificação TB_THUMBTRACK |
| TB_THUMBTRACK | Movimento do cursor (o utilizador arrastou o cursor) |
| TB_TOP | VK_HOME |
Processamento de mensagens padrão da barra de controle
Esta seção descreve o processamento de mensagens da janela realizado por uma barra de controle.
| Mensagem | Processamento realizado |
|---|---|
| WM_CAPTURECHANGED | Cancela o temporizador se um temporizador tiver sido definido durante o processamento de WM_LBUTTONDOWN, e envia o código de notificação TB_THUMBPOSITION, se necessário. Ele sempre envia o código de notificação TB_ENDTRACK. |
| WM_CREATE | Executa inicialização adicional, como definir o tamanho da linha, o tamanho da página e a frequência da marca de escala para valores padrão. |
| WM_DESTROY | Liberta recursos. |
| WM_ENABLE | Repinta a janela da barra de deslocamento. |
| WM_ERASEBKGND | Apaga o fundo da janela, utilizando a cor de fundo atual do controlo deslizante. |
| WM_GETDLGCODE | Retorna o valor do DLGC_WANTARROWS. |
| WM_KEYDOWN | Processa as chaves de direção e envia os códigos de notificação TB_TOP, TB_BOTTOM, TB_PAGEUP, TB_PAGEDOWN, TB_LINEUP e TB_LINEDOWN, conforme apropriado. |
| WM_KEYUP | Envia o código de notificação TB_ENDTRACK se a chave for uma das chaves de direção. |
| WM_KILLFOCUS | Repinta a janela da barra de deslize. |
| WM_LBUTTONDOWN | Define o foco e a captura do rato para a barra de controlo. Quando necessário, ele define um temporizador que determina a rapidez com que o controle deslizante se move em direção ao cursor do mouse quando o usuário mantém pressionado o botão do mouse na janela. |
| WM_LBUTTONUP | Liberta a captura do rato e termina o temporizador caso tenha sido definido durante o processamento de WM_LBUTTONDOWN. Ele envia o código de notificação TB_THUMBPOSITION, se necessário. Ele sempre envia o código de notificação TB_ENDTRACK. |
| WM_MOUSEMOVE | Move o controle deslizante e envia o código de notificação TB_THUMBTRACK ao rastrear o mouse (consulte WM_TIMER). |
| WM_PAINT | Pinta a barra de pista. Se o parâmetro wParam não for NULL, o controlo assume que o valor é um HDC e pinta usando esse contexto de dispositivo. |
| WM_SETFOCUS | Repinta a janela da barra de pista. |
| WM_SIZE | Define as dimensões do trackbar, removendo o controle deslizante se não houver espaço suficiente para o exibir. |
| WM_TIMER | Recupera a posição do mouse e atualiza a posição do controle deslizante. (Ele é recebido somente quando o usuário está arrastando o controle deslizante.) |
| WM_WININICHANGE | Inicializa as dimensões do controle deslizante. |
Dicas de ferramentas da barra de controlo
Uma barra de trilho criada com o estilo TBS_TOOLTIPS tem um controle de dica de ferramenta padrão. A dica de ferramenta permanece visível e exibe o valor atual à medida que o usuário arrasta o controle deslizante usando o mouse.
Você pode atribuir um novo controle de dica de ferramenta a uma barra de controle enviando a mensagem TBM_SETTOOLTIPS. Para recuperar o identificador para um controle de dica de ferramenta atribuído, use a mensagem TBM_GETTOOLTIPS.