我在Dialog上放了一个scrollbar,但是发现它没有任何事件,我需要它当用户向下、向上、或拖拽时能够响应事件。
另外,我设置了range, npos, npage等。但是发现运行时,用鼠标点击,不能改变这个scrollbar的值。奇怪了,大家帮帮我

解决方案 »

  1.   

    http://www.vczx.com/tutorial/vc_mfc/vc_mfc_4.php
      

  2.   

    Create a window with WS_HSCROLL or/and WS_VSCROLL style.
      

  3.   

    通过dialog 的WS_HSCROLL 和 WS_VSCROLL 响应方法,在方法的参数中有个Ctrl对象指针,
    判断是不是你的滚动条,如果是,就响应!
      

  4.   

    那为什么在运行时,用鼠标点击、拖拽,不能改变这个scrollbar呢?
      

  5.   

    在Create scrollbar的时候,有一个参数就是父类的指针,那么响应这些事件还是通过父类的WS_HSCROLL 以及 WS_VSCROLL ,就可以了。
      

  6.   

    但是,我用鼠标点击、拖拽,都不能改变nPos这是怎么回事啊?
      

  7.   

    是这样的,既然是你自定义的滚动条,那么上下等操作也由你控制,OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 中,nSBCode就是用户的操作,然后你再相应改变滚动条状态就可以了。 nSBCode有9种可能,分别是:
    // SB_LINEUP 0
    // SB_LINEDOWN 1
    // SB_PAGEUP 2
    // SB_PAGEDOWN 3
    // SB_THUMBPOSITION 4
    // SB_THUMBTRACK 5
    // SB_TOP 6
    // SB_BOTTOM 7
    // SB_ENDSCROLL 8