我从CScrollView继承了一个类,现在需要用鼠标拖动滑杆时,视图移动固定距离(20)。怎么做?

解决方案 »

  1.   

    重载OnSroll()控制你的固定距离 试试。
      

  2.   

    void CYourView::OnHScroll(UINT nSBCode, UINT iPos, CScrollBar* pScrollBar) 
    {
    static int iPosOld=0;
    if(nSBCode == SB_THUMBTRACK)
    {
    SCROLLINFO si;
    si.cbSize=sizeof(si);
    si.fMask=SIF_TRACKPOS;
    GetScrollInfo(SB_HORZ,&si);
    if(si.nTrackPos>iPosOld)si.nTrackPos=iPosOld+20;
    if(si.nTrackPos<iPosOld)si.nTrackPos=iPosOld-20;
    }
    if (m_ptScroll.x<0)
    m_ptScroll.x = 0;
    if (m_ptScroll.x>(int)(m_sizeOriginalImage.cx*m_fRatioX) - rcClient.Width())
    {
    m_ptScroll.x = (int)(m_sizeOriginalImage.cx*m_fRatioX) - rcClient.Width();
    }
    SetScrollPos(SB_HORZ, m_ptScroll.x, TRUE);
    InvalidateControl();
    }
    }
      

  3.   

    哎呀,很乱
    反正当你发现nSBCode==SB_THUMBTRACK以后,你就获得当前滚动条位置和上次位置的差,
    如果是往上拖,就把滚动条的位置设置为上次位置-20,反之则+20
    最后再判断滚动条位置越界的问题
      

  4.   

    先GetScrollPosition得到已经滚动的视图在当前的位置,再用ScrollToSize函数。