基本原理是响应按纽动作,向滚动条发出适当的消息。
比如针对你的实现问题,应在按钮响应方法中调用m_pScrollWnd->SendMessage(WM_HSCROLL, SB_LEFT, m_pScrollWnd->GetSafeHwnd())。
至于其它情况,可以参阅MSDN中SendMessage、WM_HSCROLL、WM_VSCROLL等部分。
祝顺利!

解决方案 »

  1.   

    我如何得到这个m_pScrollWnd指针呢?谢谢。
      

  2.   

    这个m_pScrollWnd指针应该是你自己定义的呀!
    如果是CScrollView的话,那就用
    virtual CScrollBar* GetScrollBarCtrl( int nBar ) const;
      

  3.   

    不行呀,sendmessage说第三个参数不能由HWND * 转为long型。
      

  4.   

    对不起,我疏忽了。强制了一下,写成m_pScrollWnd->SendMessage(WM_HSCROLL, SB_LEFT, (LPARAM)m_pScrollWnd->GetSafeHwnd())。
      

  5.   

    谢谢大家的答复。
    我试过了,还是不行,没有任何反应,我已在CScrollView::OnHscroll(...)添加了
    如下代码:
             int nCurr =  pScrollBar->GetScrollPos();
             switch( nSBCode )
             {
               case LB_LEFT:
                    nPos--;
              ....
             }
             nPos+=nCurr;
             pScrollBar->SetScrollPos(nPos);
             Invalidate();
          
            CView::OnHscroll(   ) 
          }  
     虽然是没有错了,但没有任何结果。
    我换了一种方法做出来了,先int nPos = GetScrollPos()一下,然后再SetScrollPos(nPos--)即可。
    我有一个新问题:
       在对话框中有三个滚动条,代表红、绿、蓝三色,通过拉动它来得到各基色的值后,再组合成一种
    RGB值,而只有一个OnHScroll()事件,如何处理?