Problème scroll bar

cs_lma Messages postés 5 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 15 avril 2003 - 26 févr. 2003 à 14:54
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 26 févr. 2003 à 19:30
Je souhaite integrer une scroll bar pour faire varier une valeur.
Quand je bouge le curseur avec la souris çà marche mais quand j'appuie sur les boutons de chaque côté çà part en vrac de façon aléatoire.
Est ce que quelqu'un à une solution

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 févr. 2003 à 15:28
Salut,
je peux te faire un prog demo si NON mfc.
Alors precise que je ne perde pas de temps pour rien.
ciao...
0
cs_lma Messages postés 5 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 15 avril 2003
26 févr. 2003 à 15:32
C'est bien en MFC que j'ai un problème
Merci quand même
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
26 févr. 2003 à 19:27
bonjour Ima,

le ScrollBar est assez "tricky" c'est vrai
je suppose que tu as une boite de dialogue avec ta barre de défilement horizontale
Avec MFC/ClassWizard , tu as un mis un Label lié avec un int m_val et ta barre liée avec un CScrollbar m_scroll
Je suppose aussi que tu as initialisé tout ca dans OnInitDialog
// TODO: Add extra initialization here
m_scroll.SetScrollRange(0,100);
m_scroll.SetScrollPos(10);
m_val="0";

...Que tu as du code semblable à celui que tu peux trouver dans l'aide sur la gestion de HScroll
void CScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// Get the minimum and maximum scroll-bar positions.
int minpos;
int maxpos;
pScrollBar->GetScrollRange(&minpos, &maxpos);
maxpos = pScrollBar->GetScrollLimit();

// Get the current position of scroll box.
int curpos = pScrollBar->GetScrollPos();

// Determine the new position of scroll box.
switch (nSBCode)
{
case SB_LEFT: // Scroll to far left.
curpos = minpos;
break;

case SB_RIGHT: // Scroll to far right.
curpos = maxpos;
break;

case SB_ENDSCROLL: // End scroll.
break;

case SB_LINELEFT: // Scroll left.
if (curpos > minpos)
curpos--;
break;

case SB_LINERIGHT: // Scroll right.
if (curpos < maxpos)
curpos++;
break;

case SB_PAGELEFT: // Scroll one page left.
{
// Get the page size.
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info, SIF_ALL);

if (curpos > minpos)
curpos = max(minpos, curpos - (int) info.nPage);
}
break;

case SB_PAGERIGHT: // Scroll one page right.
{
// Get the page size.
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info, SIF_ALL);

if (curpos < maxpos)
curpos = min(maxpos, curpos + (int) info.nPage);
}
break;

case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
curpos = nPos; // of the scroll box at the end of the drag operation.
break;

case SB_THUMBTRACK: // Drag scroll box to specified position. nPos is the
curpos = nPos; // position that the scroll box has been dragged to.
break;
}

// Set the new position of the thumb (scroll box).
pScrollBar->SetScrollPos(curpos);
m_val.Format("%d", curpos);//à rajouter pour vérifier le bon Scrolling

UpdateData(false);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

... et enfin la ligne sur laquelle j'ai commenté ... à rajouter
Ca devrait marcher
A toi de gérer encore plus de fonctionnalités... comme cliquer dans le grisé...
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
26 févr. 2003 à 19:30
enfin... m_scroll.SetScrollPos(0);
qui correspond à m_val="0"
0
Rejoignez-nous