Je developpe une GUI en C++ (MFC). Dedans j ai une grosse fenêtre ou j utilise les scroll pour naviguer. Du coup j ai utilisé les methodes: OnVScroll et OnHScroll.
void MyWindow::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int nDelta;
int nMaxPos = m_rect.Width() - m_nCurWidth;
switch (nSBCode)
{
case SB_LINERIGHT:
if (m_mScrollPos >= nMaxPos)
return;
nDelta = min(nMaxPos/10,nMaxPos-m_mScrollPos);
break;
case SB_LINELEFT:
if (m_mScrollPos <= 0)
return;
nDelta = -min(nMaxPos/10,m_mScrollPos);
break;
case SB_LEFT:
break;
case SB_RIGHT:
break;
case SB_PAGERIGHT:
if (m_mScrollPos >= nMaxPos)
return;
nDelta = min(nMaxPos/10,nMaxPos-m_mScrollPos);
break;
case SB_PAGELEFT:
if (m_mScrollPos <= 0)
return;
nDelta = -min(nMaxPos/10,m_mScrollPos);
break;
case SB_THUMBTRACK:
if (m_mScrollPos >= nMaxPos)
return;
nDelta = (int)nPos - m_mScrollPos;
break;
default:
return;
}
m_mScrollPos += nDelta;
SetScrollPos(SB_HORZ,m_mScrollPos,TRUE);
ScrollWindow(-nDelta,0);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
Tout ca marche plutot bien sauf que j ai des slider control dans la fenetre, et il y a un conflit entre le fait de glisser le slider et la position du scroll horizontal (a cause de
SB_THUMBTRACK). Quand je glisse le slider j ai la fenetre qui scroll aussi.
Est ce que vous avez une idée sur comment empecher cette interferation.