关于调整麦克风音量的问题 要用vc编程调节麦克风的音量,我已经找了很久了,在论坛里也搜了很久,也找到一些例程,但是我发现这些例程无一例外的都是调节“播放”控制对话框中的麦克风音量,这种调节对麦克风根本不起作用,必须调节“录音”控制对话框中的麦克风音量才能真正起作用,请问那位高人有证明真正可用的麦克风音量调节例程,可否帮助一把,不胜感激啊!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MMRESULT mixerSetControlDetails( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails );使用MIXER_OBJECTF_HWAVEIN不行???? 应该是可以控制的,参考:http://www.codeproject.com/internet/voicechat2.asp这个例子中有一个封装的麦克风的类MicPhone。你可以看看! 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上找到。 http://www.codeguru.com/Cpp/G-M/multimedia/article.php/c1569/ vcleaner大哥,太感谢了,解决了困扰我好几天的烦恼啊,80分送给你!! 回贴的时候才刷出这么多大虾的回复,多谢了!CVolumeInXXX这个类我看过,但是可能是理解的不透彻,始终没有用成功过。不过还是多谢 DentistryDoctor大虾了 也给DentistryDoctor大虾10分吧,vcleaner大哥请不要见怪啊。 mixerSetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE | MIXER_OBJECTF_HMIXER); 使用COM部分读取excel 昨晚女朋友要完了还要,无奈,我恢复下体力,又给她了 【几个小问题】实在没分了。。。 执行错误:Unhandled exception 。 cannot open include file 'afxres.h'!!!!! 在对话框中用设备绘图的时候,如何激发OnPaint()? 高分,“网页取证”怎样做?? .NET现在市面上都有什么版本? VC写位图失败 100分求解,如何编程序改变位图的画质? !!画刷Cbrush是否能做成透明? 江湖救急... 找不到 "窗体"
HMIXEROBJ hmxobj,
LPMIXERCONTROLDETAILS pmxcd,
DWORD fdwDetails
);使用MIXER_OBJECTF_HWAVEIN不行????
这个例子中有一个封装的麦克风的类MicPhone。你可以看看!
{
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上找到。
CVolumeInXXX这个类我看过,但是可能是理解的不透彻,始终没有用成功过。不过还是多谢 DentistryDoctor大虾了