要用vc编程调节麦克风的音量,我已经找了很久了,在论坛里也搜了很久,也找到一些例程,但是我发现这些例程无一例外的都是调节“播放”控制对话框中的麦克风音量,这种调节对麦克风根本不起作用,必须调节“录音”控制对话框中的麦克风音量才能真正起作用,请问那位高人有证明真正可用的麦克风音量调节例程,可否帮助一把,不胜感激啊!!

解决方案 »

  1.   

    MMRESULT mixerSetControlDetails(
      HMIXEROBJ hmxobj,             
      LPMIXERCONTROLDETAILS pmxcd,  
      DWORD fdwDetails              
    );使用MIXER_OBJECTF_HWAVEIN不行????
      

  2.   

    应该是可以控制的,参考:http://www.codeproject.com/internet/voicechat2.asp
    这个例子中有一个封装的麦克风的类MicPhone。你可以看看!
      

  3.   

    void CVolumeInXXX::SetCurrentVolume( DWORD dwValue )
    {
    if ( !m_bAvailable || (dwValue<m_dwMinimalVolume) || (dwValue>m_dwMaximalVolume) )
    return;
    MIXERCONTROLDETAILS_UNSIGNED* aDetails = (MIXERCONTROLDETAILS_UNSIGNED*)malloc(m_nChannelCount*sizeof(MIXERCONTROLDETAILS_UNSIGNED));
    if ( !aDetails )
    return;
    for ( int i = 0; i < m_nChannelCount; i++ )
    {
    aDetails[i].dwValue = dwValue;
    }
    MIXERCONTROLDETAILS ControlDetails;
    memset( &ControlDetails, 0, sizeof(MIXERCONTROLDETAILS) );
    ControlDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
    ControlDetails.dwControlID = m_dwVolumeControlID;
    ControlDetails.cChannels = m_nChannelCount;
    ControlDetails.cMultipleItems = 0;
    ControlDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
    ControlDetails.paDetails = &aDetails[0];
    MMRESULT mmResult = mixerSetControlDetails( (HMIXEROBJ)m_dwMixerHandle, &ControlDetails, MIXER_SETCONTROLDETAILSF_VALUE );
    free( aDetails );
    if ( mmResult != MMSYSERR_NOERROR )
    {
    TRACE(".InputXxxVolume: FAILURE: Could not set volume(%d) mmResult=%d\n", dwValue, mmResult );
    }
    }
    CVolumeInXXX类可以在www.codeguru上找到。
      

  4.   

    http://www.codeguru.com/Cpp/G-M/multimedia/article.php/c1569/
      

  5.   

    vcleaner大哥,太感谢了,解决了困扰我好几天的烦恼啊,80分送给你!!
      

  6.   

    回贴的时候才刷出这么多大虾的回复,多谢了!
    CVolumeInXXX这个类我看过,但是可能是理解的不透彻,始终没有用成功过。不过还是多谢 DentistryDoctor大虾了
      

  7.   

    也给DentistryDoctor大虾10分吧,vcleaner大哥请不要见怪啊。
      

  8.   

    mixerSetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE | MIXER_OBJECTF_HMIXER);