cs_lma
Messages postés5Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention15 avril 2003
-
26 févr. 2003 à 14:54
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDerniè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
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 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);
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
... 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é...