我想在拖动slider上面的滑块的时候画一条由滑块延伸出来的虚线,怎么实现啊?

解决方案 »

  1.   

    要响应对话框的WM_HSCROLL消息,用其中的参数pScrollBar来判断是那个在滚动,为NULL的话是对话框的标准滚动条,其它的自己来判断。如下例:void CDockForm::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
      // TODO: Add your message handler code here and/or call default
      if (pScrollBar != NULL) // 为NULL的话是对话框的标准滚动条
      {
        CSliderCtrl *pwndSlider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_MAXDELTA);
        if (pScrollBar->GetSafeHwnd() == pwndSlider->GetSafeHwnd())
        {
          CString strDelta;
          strDelta.Format("%d", pwndSlider->GetPos());
          m_wndMaxDelta.SetWindowText(strDelta);
        }
      }
      
      CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
    }
      

  2.   

    参考:
    void CMyPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    // TODO: Add your message handler code here and/or call default
    if(pScrollBar->GetSafeHwnd() == m_SliderGraph.GetSafeHwnd())
    {
    if(m_FilterGraph)
    {
    double duration=1.;
    m_FilterGraph->GetDuration(&duration);
    double pos=duration *m_SliderGraph.GetPos()/1000.;
    m_FilterGraph->SetCurrentPosition(pos);
    }
    }
    else if(pScrollBar->GetSafeHwnd() == m_AudioVol.GetSafeHwnd() && m_bHaveSound)
    {
    int pos = m_AudioVol.GetPos();
    m_FilterGraph->SetAudioVolume(pos-10000);
    }
    }