我在对话框中,使用了一个CSlider控件,可是在滑块上单击时,滑块总是移动一个固定的长度,而不是移动到鼠标单击的地方?请高手指点。

解决方案 »

  1.   

    int CSliderCtrl::SetPageSize(int nSize);
      

  2.   

    void CSliderCtrl::SetPos(int nPos);
      

  3.   

    我想把鼠标的单击点作为滑块的移动位置,SetPageSize设置可不可以,用SetPos()时我不知道当时鼠标单击的位置,当用getpos()时,滑块已经一道新的位置了
      

  4.   

    定义新类CMySlider::Pulic CSliderCtrl,加入下面消息映射
    void CMySlider::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    afxDump<<point.x<<"\n"<<point.y<<"\n";
    CRect m_rect;
    this->GetWindowRect(&m_rect);
    afxDump<<m_rect.Width()<<"\n";
    int m_min,m_max;

    this->GetRange(m_min,m_max);
    int temp=point.x/m_rect.Width();
    temp*=(m_max-m_min);
    this->SetPos(temp);

    CSliderCtrl::OnLButtonDown(nFlags, point);
    }
    在你的对话框中加入从CMySlider m_Slider;
      

  5.   

    在你的对话框中修改从CSliderCtrl m_Slider
    为CMySlider m_Slider
          //{{AFX_DATA(CAdressBookDlg)
    CMySlider  m_Slider;
    //}}AFX_DATA