如题

解决方案 »

  1.   

    参见下面的代码,在对话框的OnHScroll函数中处理:
    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);
    }
    }
      

  2.   

    对,像 vcleaner(我没做大哥已经很久了.......) 说的,要响应对话框的WM_HSCROLL消息,然后判断pScrollBar,为NULL的话是对话框的滚动条。看看MSDN
      

  3.   

    oid CTest6Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    CWnd *pSlider1, *pSlider2;
    pSlider1 = GetDlgItem(IDC_SLIDER1);
    pSlider2 = GetDlgItem(IDC_SLIDER2);

    switch(nSBCode)
    {
    case SB_THUMBTRACK: //鼠标拖动
    if (pScrollBar == pSlider1)
    {
    //

    else 
    if (pScrollBar == pSlider2) 
    {
    // ………….;
    }
    break;
    case SB_LINERIGHT: //单击滚动条向右的箭头
    //......
    break;
    case SB_LINELEFT:  //单击滚动条向左的箭头
    //......
    break;
    case SB_PAGERIGHT://单击滚动条右面的箭头与滚动块之间的区域(pagedn)
    //......
    break;
    case SB_PAGELEFT://单击滚动条左面的箭头与滚动块之间的区域(pageup)
    //......
    break;
    }

    CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
    }
      

  4.   

    void CPlayPowerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    为什么我的每次触发的事件中,nPos都为0???