定义了一个CSliderCtrl对象,
CSliderCtrl m_Slider.
在初始函数里面初始化.在函数OnHScroll捕捉到鼠标点击控件的消息.
但是为啥捕捉到的距离都与实际点击距离相差很多呢.
假设我设置m_Slider.setRange(0,1000);
然后鼠标点在大概结束处,而利用GetPos函数得到的好像大概是200左右.
好像它是一个page一个page的跳的,有没有什么办法解决啊.谢谢各位大侠.

解决方案 »

  1.   

    貌似只有SetRange,没有setRange吧。
      

  2.   

    嗯,写太快了是SetRange(0, 1000);可这个跟距离关系不大啊.
    我做的是一个简单播放器,鼠标点击不到位的问题.
      

  3.   

    目前已经解决该问题,为了方便后人,我把解决方法帖一下.1.定义自己的CGoodSliderCtrl类,继承自CSliderCtrl
    2.添加鼠标响应函数OnLButtonDown
    3.在CGoodSliderCtrl::OnLButtonDown函数里面添加如下代码:
      
      //得到控件本身矩形大小
      CRect   mSliderRect;   
      GetWindowRect(&mSliderRect);     
      //设置的控件range值
      int   mMinRg,mMaxRg;   
      GetRange(mMinRg,mMaxRg);  //得到目前的Pos值
      DWORD   nowPos=GetPos();   
      //计算鼠标点击后的pos值
      DWORD   mouseClickpos=(point.x)*(mMaxRg-mMinRg)/mSliderRect.Width();
       
      //设置当前需要滑动的距离
      SetPageSize(abs(mouseClickpos-nowPos));   
      //每次设置新的CSliderCtrl移动page值,可以实现要求。