Comment limiter le mouvement d’un curseur

Comme décrit dans à propos des contrôles TrackBar, il est possible de définir une partie off de la plage TrackBar en tant que plage de sélection. L’une des finalités d’une plage de sélection consiste à limiter le déplacement du curseur, en faisant en sorte que certaines parties de la plage complète soient délimitées.

Bon à savoir

Technologies

Prérequis

  • C/C++
  • Windows Programmation de l’interface utilisateur

Instructions

Limiter le déplacement du curseur

L’exemple de code suivant limite le déplacement du curseur en réinitialisant la position du curseur à chaque fois qu’il est déplacé en dehors de la plage de sélection.

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;
    }

Remarques

Cet extrait de code fait partie de la procédure de fenêtre d’une boîte de dialogue.

Utilisation des contrôles TrackBar