我在用CScrollview 发现一个问题就是 不能设置拖动滚动条时,每次最少可以拖动的距离。比如说文本编辑器的滚动条每拖动一次就滚动一个字符,这是最小的单位,在浏览器中这个最小的单位是象素,但在CScrollview 中不知如何设置这个“拖动滚动条”的最小距离。如果不行用Cscrollbar 成不成。如果都不行用什么方法能实现(毕竟很多程序都有应用我觉的这个肯定能实现就是不知道如何作)

解决方案 »

  1.   

    重载OnScroll,根据滚动方式,当前的位置,计算滚动结束之后的位置。
      

  2.   

    SetScrollSizes(MM_TEXT, CSize(822,2000)); //MM_TEXT 也是像素
    你只设置滚动页面的大小就行了,其它都是自动的
      

  3.   

    貌似在Cscrollview 中重载 OnScroll 不会发送nScrollCode 的,我无法判断是不是拖动了,是不是只能用
    CScrollBar 类了。
      

  4.   

    这个是函数,OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    nSBCode就是滚动的类型了,nPos在这里不能用,需要用GetScrollPos,SetScrollPos来。可能shunruo 的方法更简单
      

  5.   

    SetScrollSizes 只能实现点击箭头和点击滚动调空白处的翻页距离 不能设置拖动时的距离,我试了试在
    OnScroll 中处理SB_THUMBTRACK 和SB_THUMBPOSITION 然后根据nPos 计算 ,再ScrollToPosition,基本可以实现
    但当拖动滚动条的时候整个view 还是以象素移动的(不像记事本中那样,每拖动就走一行),停下的时候回自动
    走过相应的行,我想实现向记事本中那样的推动效果,就是每拖动够一行的距离view 才移动,不知谁还有高见没有谢谢