1、我下载了一个自绘Silder源码,其中IDC_SLD_AUDIO是Silder控件,它与m_silder变量关联DX_Control(pDX, IDC_SLIDER_SHARE2, m_silder);这里的m_silder是CBitSlider类。
2、现在我想利用这个Silder控件来控制音量,又要与控制音量的CMixerFader的类进行关联。 为此我是这样处理的:
在头文件中:
CMixerFader m_mainVolume;
在cpp文件中利用下面的方法调用:
m_mainVolume.SubclassDlgItem( IDC_SLD_AUDIO, this); 
m_mainVolume.Init( MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, 
                      NO_SOURCE, 
                      MIXERCONTROL_CONTROLTYPE_VOLUME, 
                      CMixerFader::MAIN ); 
但是运行程序崩溃。请问:同一控件不同能同时关联两个不同的变量吗?怎么解决这个问题?谢谢!!

解决方案 »

  1.   

    关联2个变量是可以的。
    一个Control类型,一个Value类型。
    其他情况就不可以了
      

  2.   


    这样行不行?把CSlider控件的变量值直接传递给m_mainVolume不知行不行?代码如下:
    BOOL CConferenceDialog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 

    CString lpszValue; 
    NMHDR *pParam = reinterpret_cast <NMHDR*>(lParam); 
    if(pParam->hwndFrom == m_slider.m_hWnd) 

    int value = m_slider.GetPos(); 
    m_mainVolume.SetPos(value); 
    lpszValue.Format("%d",value); } 
    return CDialog::OnNotify(wParam, lParam, pResult); 

    然后再这样控制音量:CMixerFader m_mainVolume;
    在cpp文件中利用下面的方法调用:
    m_mainVolume.SubclassDlgItem( IDC_SLD_AUDIO, this);
    m_mainVolume.Init( MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,
                          NO_SOURCE,
                          MIXERCONTROL_CONTROLTYPE_VOLUME,
                          CMixerFader::MAIN );
      

  3.   

    不好意思,多贴了m_mainVolume.SubclassDlgItem( IDC_SLD_AUDIO, this); 这一句,不要!!
      

  4.   

    不能关联两个同类型的变量,要么一个Control,一个Value型的才行
      

  5.   

    这个是对的,我刚刚试验过,一个按钮关联了CBUTTON类的变量m_cbutton,且关联了我自定义的mybutton类的变量m_button,但是,只有一个效