Déplacer le curseur d'une ScrollBar
Bonjour à tous!
alors, voila, j'ai encore un petit soucis de scrollbar :
- j'ai positionné une scrollbar dans une boite de dialogue.
- dans une classe dérivée de CDialog, il y a :
Code:
1 2 3 4 5 6
| private:
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
private:
// Attribut
CScrollBar ScrollRight; |
- dans DoDataExchange de ma classe, il y a :
Code:
DDX_Control(pDX, IDC_SCROLLBAR_RIGHT, ScrollRight);
- dans les message map, il y a :
Code:
1 2 3 4
| BEGIN_MESSAGE_MAP(...)
//...
ON_WM_VSCROLL()
END_MESSAGE_MAP() |
- et voici ma fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
void CDlg_DCI::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int position;
int pos;
position = pScrollBar->GetScrollPos();
pos = position;
switch (nSBCode)
{
case SB_LINEUP : //Scroll une ligne en haut.
position -= 1;
// pScrollBar->SetScrollPos(position,TRUE);
ScrollRight.SetScrollPos(position,TRUE);
break;
case SB_LINEDOWN : //Scroll une ligne en bas.
position += 1;
// pScrollBar->SetScrollPos(position,TRUE);
ScrollRight.SetScrollPos(position,TRUE);
break;
case SB_PAGEUP: //Scroll une page en haut.
position -= 5;
// pScrollBar->SetScrollPos(position,TRUE);
ScrollRight.SetScrollPos(position,TRUE);
break;
case SB_PAGEDOWN: //Scroll une page en bas.
position += 5;
// pScrollBar->SetScrollPos(position,TRUE);
ScrollRight.SetScrollPos(position,TRUE);
break;
case SB_THUMBPOSITION: //Scroll a une position absolue.La position courante est fournie dans le deuxieme parametre.
// pScrollBar->SetScrollPos(nPos,TRUE);
ScrollRight.SetScrollPos(nPos,TRUE);
break;
case SB_THUMBTRACK : //Glisse la boite de scoll a une position specifiee. La position courante est fournie par le deuxieme parametre.
// pScrollBar->SetScrollPos(nPos,TRUE);
ScrollRight.SetScrollPos(nPos,TRUE);
break;
case SB_TOP: //Scroll au debut.
break;
case SB_BOTTOM: //Scroll a la fin.
break;
case SB_ENDSCROLL: //Fin de scroll.
break;
}
ScrollWindow(0, (position-pos));
UpdateData(true);
} |
celà fonctionne, ma fenetre se déplace correctement, mais le curseur de ma scrollbar se remet automatiquement en haut ....
quelqu'un peut il m'aider s'il vous plait?