Barras de rolagem simples
O Microsoft Internet Explorer 4.0 introduziu uma nova tecnologia visual chamada barras de rolagem planas. Funcionalmente, as barras de rolagem planas se comportam exatamente como as barras de rolagem padrão. A diferença é que você pode personalizar sua aparência em uma extensão maior do que as barras de rolagem padrão.
A ilustração a seguir mostra uma janela que contém uma barra de rolagem plana.
Observação
Barras de rolagem planas são suportadas pelo Comctl32.dll versões 4.71 a 5.82. Comctl32.dll versões 6.00 e posteriores não suportam barras de rolagem planas.
Usando barras de rolagem planas
Esta seção descreve como implementar barras de rolagem planas em seu aplicativo.
Antes de começar
Para usar as funções da barra de rolagem plana, você deve incluir Commctrl.h em seus arquivos de origem e vincular com Comctl32.lib.
Adicionando barras de rolagem planas a uma janela
Para adicionar barras de rolagem planas a uma janela, chame InitializeFlatSB, passando o identificador para a janela. Em vez de usar as funções padrão da barra de rolagem para manipular suas barras de rolagem, você deve usar a função FlatSB_XXX equivalente. Há funções de barra de rolagem plana para definir e recuperar as informações de rolagem, intervalo e posição. Se as barras de rolagem plana não tiverem sido inicializadas para sua janela, a API da barra de rolagem plana será adiada para as funções padrão correspondentes, se houver alguma usada. Isso permite que você ative e desative barras de rolagem planas sem precisar escrever código condicional.
Como um aplicativo pode ter definido métricas personalizadas para suas barras de rolagem planas, elas não são atualizadas automaticamente quando as métricas do sistema são alteradas. Quando as métricas da barra de rolagem do sistema mudam, uma mensagem WM_SETTINGCHANGE é transmitida, com seu wParam definido como SPI_SETNONCLIENTMETRICS. Para atualizar as barras de rolagem simples para as novas métricas do sistema, os aplicativos devem manipular essa mensagem e alterar as propriedades dependentes da métrica da barra de rolagem plana explicitamente.
Para atualizar as propriedades da barra de rolagem, use FlatSB_SetScrollProp. O fragmento de código a seguir altera as propriedades dependentes de métrica de uma barra de rolagem simples para os valores atuais do sistema.
void FlatSB_UpdateMetrics(HWND hWnd)
{
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXVSCROLL, GetSystemMetrics(SM_CXVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHSCROLL, GetSystemMetrics(SM_CXHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVSCROLL, GetSystemMetrics(SM_CYVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYHSCROLL, GetSystemMetrics(SM_CYHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHTHUMB, GetSystemMetrics(SM_CXHTHUMB), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVTHUMB, GetSystemMetrics(SM_CYVTHUMB), TRUE);
}
Aprimorando barras de rolagem planas
FlatSB_SetScrollProp permite modificar as barras de rolagem planas para personalizar a aparência da janela. Para barras de rolagem verticais, você pode alterar a largura da barra e a altura das setas de direção. Para barras de rolagem horizontais, você pode alterar a altura da barra e a largura das setas de direção. Você também pode alterar a cor do plano de fundo das barras de rolagem horizontal e vertical.
FlatSB_SetScrollProp também permite personalizar como as barras de rolagem planas são exibidas. Alterando as propriedades WSB_PROP_VSTYLE e WSB_PROP_HSTYLE, você pode definir o tipo de barra de rolagem que deseja usar. Três estilos estão disponíveis.
Estilo | Descrição |
---|---|
FSB_ENCARTA_MODE | Uma barra de rolagem plana padrão é exibida. Quando o mouse se move sobre um botão de direção ou o polegar, essa parte da barra de rolagem será exibida em 3D. |
FSB_FLAT_MODE | Uma barra de rolagem plana padrão é exibida. Quando o mouse se move sobre um botão de direção ou o polegar, essa parte da barra de rolagem será exibida em cores invertidas. |
FSB_REGULAR_MODE | Uma barra de rolagem normal, não plana, é exibida. Nenhum efeito visual especial será aplicado. |
Removendo barras de rolagem planas
Se você quiser remover barras de rolagem planas da janela, chame a função UninitializeFlatSB, passando a alça para a janela. Esta função só remove barras de rolagem planas da janela em tempo de execução. Você não precisa chamar essa função quando sua janela é destruída.