你重载对话框中的WM_VSCROLL事件试试

解决方案 »

  1.   

    CWnd::GetScrollBarCtrl  
    virtual CScrollBar* GetScrollBarCtrl( int nBar ) const;Return ValueA sibling scroll-bar control, or NULL if none.ParametersnBarSpecifies the type of scroll bar. The parameter can take one of the following values: SB_HORZ   Retrieves the position of the horizontal scroll bar.
    SB_VERT   Retrieves the position of the vertical scroll bar.
      

  2.   

    to valentine_sc(valentine) :
    重载了,但是没有ID,怎么识别滚动条啊?
      

  3.   

    to  datablader(皮皮)
       可以详细一点吗?谢谢!
      

  4.   

    OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    通过pScrollBar就应该可以达到你的目标了吧
      

  5.   

    to valentine_sc(valentine) :
       得到指针后不是要
       if(pScrollBar->GetDlgCtrlID()==IDC_...){}
    才能识别滚动条吗?没有ID怎么识别呢?
      

  6.   

    我还是不太明白,你用ID做什么呢,如果你是想通过判断ID来进行滚动操作,那么得到指针以后就可以不用判断ID了呀
      

  7.   

    to valentine_sc(valentine) :
       我也觉得不应该判断ID,可我没有判断ID时出错了啊....
       或许要一个什么函数来识别滚动条吧,可惜我不知道,都看了n久的msdn了,还是没有找到^_^
      

  8.   

    这样也出错了. if(pScrollBar->GetScrollBarCtrl(SB_HORZ))
    {
    int nCurrentPos=pScrollBar->GetScrollPos();
    switch(nSBCode)
    {
    case SB_THUMBTRACK:
    case SB_THUMBPOSITION:
    pScrollBar->SetScrollPos(nPos);
    break;
    case SB_LINELEFT:
    pScrollBar->SetScrollPos(nCurrentPos-1);
    break;
    case SB_LINERIGHT:
    pScrollBar->SetScrollPos(nCurrentPos+1);
    break;
    case SB_PAGELEFT:
    pScrollBar->SetScrollPos(nCurrentPos-5);
    break;
    case SB_PAGERIGHT:
    pScrollBar->SetScrollPos(nCurrentPos+5);
    break;
    }
    }
      

  9.   

    在WM_VSCROLL中响应你需要的代码。
      

  10.   

    to valentine_sc(valentine) :
    编译时没有错误,但运行程序时只要鼠标点击滚动条程序就会强行终止...
      

  11.   

    int nCurrentPos = this->GetScrollPos(SB_VERT);
    switch(nSBCode)
    {
      case SB_THUMBTRACK:
    case SB_THUMBPOSITION:
    this->SetScrollPos(SB_VERT,nPos);
    break;
    case SB_LINELEFT:
    this->SetScrollPos(SB_VERT,nCurrentPos-1);
    break;
    case SB_LINERIGHT:
    this->SetScrollPos(SB_VERT,nCurrentPos+1);
    break;
    case SB_PAGELEFT:
    this->SetScrollPos(SB_VERT,nCurrentPos-5);
    break;
    case SB_PAGERIGHT:
    this->SetScrollPos(SB_VERT,nCurrentPos+5);
    break;
    }
    这样就可以了,你再试试啦