现在我用一个Scroll Bar 
我找了相关的资料已知道这些动作
     SB_TOP/SB_BOTTOM 已滚动到顶/底部 
     SB_LINEUP/SB_LINEDOWN 向上/下滚动一行 
     SB_PAGEDOWN/SB_PAGEUP 向上/下滚动一页 
     SB_THUMBPOSITION/SB_THUMBTRACK 滚动条拖动到某一位置,参数nPos指明当前位置(参数nPos在其它的情况下是无效的) 
     SB_ENDSCROLL 滚动条拖动完成(用户松开鼠标)
可是其中不包括那种 在空间上任意位置点击,滚动条自动跑到那个位置的动作(我不知道我表达的清楚么)<11111111000111111111111111111111>
假设上面是我那个控件000代表这现在滑块的位置
我现在点两边的箭头< >和拖动滑块 都可以实现对我的一个编辑框的数相应的改变
我现在想要的动作是 点1的任意一个位置滑块可以跑到相应的位置 并且编辑框的数值也相应的改变
(愁死我了 真后悔小时候不好好学语文 希望你们能听懂)

解决方案 »

  1.   

    在创建滚动条后需要调用void SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE )设置滚动范围,      int GetScrollPos( )/int SetScrollPos( )用来得到和设置当前滚动条的位置。      void ShowScrollBar( BOOL bShow = TRUE );用来显示/隐藏滚动条。      BOOL EnableScrollBar( UINT nArrowFlags = ESB_ENABLE_BOTH )用来设置滚动条上箭头是否为允许状态。nArrowFlags可取以下值:      ESB_ENABLE_BOTH 两个箭头都为允许状态 
         ESB_DISABLE_LTUP 上/左箭头为禁止状态 
         ESB_DISABLE_RTDN 下/右箭头为禁止状态 
         ESB_DISABLE_BOTH 两个箭头都为禁止状态 
         如果需要在滚动条位置被改变时得到通知,需要在父窗口中定义对消息WM_VSCROLL/WM_HSCROLL的映射。方法为在父窗口类中重载afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )/afx_msg void OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ) 所使用的消息映射宏为:ON_WM_VSCROLL( ),ON_WM_HSCROLL( ),在映射宏中不需要指明滚动条的ID,因为所有滚动条的滚动消息都由同样的函数处理。在OnHScroll/OnVScroll的第三个参数会指明当前滚动条的指针。第一个参数表示滚动条上发生的动作,可取以下值:      SB_TOP/SB_BOTTOM 已滚动到顶/底部 
         SB_LINEUP/SB_LINEDOWN 向上/下滚动一行 
         SB_PAGEDOWN/SB_PAGEUP 向上/下滚动一页 
         SB_THUMBPOSITION/SB_THUMBTRACK 滚动条拖动到某一位置,参数nPos指明当前位置(参数nPos在其它的情况下是无效的) 
         SB_ENDSCROLL 滚动条拖动完成(用户松开鼠标)
      

  2.   

    你的意思我听懂了,不知道你会不会为VC里面的控件添加成员变量的?假设你的EditBox的成员变量为m_editBox。用
    BOOL GetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask =SIF_ALL );
    获得Scroll的当前位置的值,在LPSCROLLINFO这个结构中。取得之后写到m_editBox中去,然后UpdateData(false)就能显示了。
    动态显示的话请为SB_ENDSCROLL写对应的函数
      

  3.   

    typedef struct tagSCROLLINFO { 
    UINT cbSize; 
    UINT fMask; 
    int nMin; 
    int nMax; 
    UINT nPage; 
    int nPos; 
    int nTrackPos; 
    } SCROLLINFO, *LPSCROLLINFO; 
      

  4.   

    SB_ENDSCROLL不是鼠标松开的动作么?如果不松开怎么办?
    我现在想要的一个效果是对于控件比如 
    <11111111000111111111111111111111> 
    点任何一个1 000(也就是滑块)就可以自己滚动过去 
    平常我们用的滚动条不都用这个效果么 
    我现在自己写的控件 其他的效果都没问题 就这个没有
      

  5.   

    不放开就用 SB_THUMBPOSITION好了呀
      

  6.   

    真郁闷好像我还是没有说清
    对于控件
    <11111111000111111111111111111111> 
    我现在点000 左边的1 就和点<一个效果,一直到滑块跑到我点着个1的位置点000 右边的1 就和点>一个效果,一直到滑块跑到我点着个1的位置我只能这么说了  虽然好像越解释越乱