Como limitar o movimento do controle deslizante

Conforme descrito em Sobre os controles da barra de rastreamento, é possível definir parte do intervalo da barra de trilha como um intervalo de seleção. Um propósito de um intervalo de seleção pode ser limitar o movimento do controle deslizante, tornando algumas partes do intervalo completo fora dos limites.

O que você precisa saber

Tecnologias

Pré-requisitos

  • C/C++
  • Programação da interface do usuário do Windows

Instruções

Limitar o movimento do controle deslizante

O código de exemplo a seguir limita o movimento do controle deslizante redefinindo a posição do controle deslizante sempre que ele for movido para fora do intervalo de seleção.

case WM_HSCROLL:
    {
        HWND hTrackbar = GetDlgItem(hDlg, IDC_SLIDER1);
        
        if (hTrackbar == (HWND)lParam)
        {
            int newPos    = SendMessage(hTrackbar, TBM_GETPOS, 0, 0);
            int selStart  = SendMessage(hTrackbar, TBM_GETSELSTART, 0, 0);
            int selEnd    = SendMessage(hTrackbar, TBM_GETSELEND, 0, 0);
            
            if (newPos > selEnd)
            {
                SendMessage(hTrackbar, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)selEnd);
            }
            
            else if (newPos < selStart)
            {
                SendMessage(hTrackbar, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)selStart);
            }
        }
        
        break;
    }

Comentários

Esse trecho de código faria parte do Procedimento de janela de uma caixa de diálogo.

Usando controles da barra de controle