音量控制代码如下:
void DisableMicBoost(int hWaveIn)
{
MMRESULT mmr ;
HMIXEROBJ hInputMixer = NULL;
mmr = mixerOpen(
( LPHMIXER )( &hInputMixer ),
( UINT )( hWaveIn ), 0, 0,
MIXER_OBJECTF_MIXER/*MIXER_OBJECTF_HWAVEIN*/ ) ;
if ( mmr == MMSYSERR_NOERROR )
{
MIXERLINE mixerLine ;
mixerLine.cbStruct = sizeof( MIXERLINE ) ;
mixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE ;
mmr = mixerGetLineInfo(
( HMIXEROBJ )( hInputMixer ),
&mixerLine,
MIXER_GETLINEINFOF_COMPONENTTYPE ) ; if ( mmr == MMSYSERR_NOERROR )
{
LPMIXERCONTROL mixerControl = (LPMIXERCONTROL)malloc( sizeof( MIXERCONTROL ) * mixerLine.cControls ) ;
MIXERLINECONTROLS mixerLineControls ;
mixerLineControls.cbStruct = sizeof( MIXERLINECONTROLS ) ;
mixerLineControls.dwLineID = mixerLine.dwLineID ;
mixerLineControls.cControls = mixerLine.cControls ;
mixerLineControls.cbmxctrl = sizeof( MIXERCONTROL ) ;
mixerLineControls.pamxctrl = ( LPMIXERCONTROL )( mixerControl ) ;
mmr = mixerGetLineControls(
( HMIXEROBJ )( hInputMixer ),
&mixerLineControls,
MIXER_GETLINECONTROLSF_ALL ) ;
if ( mmr == MMSYSERR_NOERROR )
{
int x = 0 ;
for ( ; x < mixerLineControls.cControls ; ++x )
{
// check control type
if ( mixerControl[x].dwControlType == MIXERCONTROL_CONTROLTYPE_LOUDNESS )
{
MIXERCONTROLDETAILS_BOOLEAN value ; MIXERCONTROLDETAILS mixerControlDetails ;
mixerControlDetails.cbStruct = sizeof( MIXERCONTROLDETAILS ) ;
mixerControlDetails.dwControlID = mixerControl[x].dwControlID;
mixerControlDetails.cChannels = 1 ;
mixerControlDetails.cMultipleItems = 0 ;
mixerControlDetails.cbDetails = sizeof( MIXERCONTROLDETAILS_BOOLEAN ) ;
mixerControlDetails.paDetails = &value ; mmr = mixerGetControlDetails(
( HMIXEROBJ )( hInputMixer ),
&mixerControlDetails,
MIXER_GETCONTROLDETAILSF_VALUE
) ; if ( mmr == MMSYSERR_NOERROR )
{
mmr = mixerSetControlDetails(
( HMIXEROBJ )( hInputMixer ),
&mixerControlDetails,
MIXER_SETCONTROLDETAILSF_VALUE
) ;
}
}
}
}
if (mixerControl)
{
free(mixerControl);
mixerControl=NULL;
}
} mixerClose( (HMIXER)( hInputMixer ) ) ;
}
}BOOL CMediaController::Gips_Connect()
{
int nDeviceID = GetInMediaDevice(GetSelectAudioSource());
DisableMicBoost(nDeviceID);
int nRet=0; if (0!=m_pGipsVoiceEngineLib->GIPSVE_SetSoundDevices(nDeviceID,WAVE_MAPPER))
{
nRet=m_pGipsVoiceEngineLib->GIPSVE_GetLastError();
if (nRet==8020)
{
Gips_StopAudioPlayer();
nRet=m_pGipsVoiceEngineLib->GIPSVE_SetSoundDevices(nDeviceID,WAVE_MAPPER);
Gips_StartAudioPlayer();
}
} m_pGipsVoiceEngineLib->GIPSVE_SetMicVolume(50);
m_pGipsVoiceEngineLib->GIPSVE_SetSpeakerVolume(50);//这里怎么获取系统音量的初始值?
.............
return TRUE;
}
如上GIPSVE_SetSpeakerVolume怎么获取系统音量的初始值?谢谢!!
void DisableMicBoost(int hWaveIn)
{
MMRESULT mmr ;
HMIXEROBJ hInputMixer = NULL;
mmr = mixerOpen(
( LPHMIXER )( &hInputMixer ),
( UINT )( hWaveIn ), 0, 0,
MIXER_OBJECTF_MIXER/*MIXER_OBJECTF_HWAVEIN*/ ) ;
if ( mmr == MMSYSERR_NOERROR )
{
MIXERLINE mixerLine ;
mixerLine.cbStruct = sizeof( MIXERLINE ) ;
mixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE ;
mmr = mixerGetLineInfo(
( HMIXEROBJ )( hInputMixer ),
&mixerLine,
MIXER_GETLINEINFOF_COMPONENTTYPE ) ; if ( mmr == MMSYSERR_NOERROR )
{
LPMIXERCONTROL mixerControl = (LPMIXERCONTROL)malloc( sizeof( MIXERCONTROL ) * mixerLine.cControls ) ;
MIXERLINECONTROLS mixerLineControls ;
mixerLineControls.cbStruct = sizeof( MIXERLINECONTROLS ) ;
mixerLineControls.dwLineID = mixerLine.dwLineID ;
mixerLineControls.cControls = mixerLine.cControls ;
mixerLineControls.cbmxctrl = sizeof( MIXERCONTROL ) ;
mixerLineControls.pamxctrl = ( LPMIXERCONTROL )( mixerControl ) ;
mmr = mixerGetLineControls(
( HMIXEROBJ )( hInputMixer ),
&mixerLineControls,
MIXER_GETLINECONTROLSF_ALL ) ;
if ( mmr == MMSYSERR_NOERROR )
{
int x = 0 ;
for ( ; x < mixerLineControls.cControls ; ++x )
{
// check control type
if ( mixerControl[x].dwControlType == MIXERCONTROL_CONTROLTYPE_LOUDNESS )
{
MIXERCONTROLDETAILS_BOOLEAN value ; MIXERCONTROLDETAILS mixerControlDetails ;
mixerControlDetails.cbStruct = sizeof( MIXERCONTROLDETAILS ) ;
mixerControlDetails.dwControlID = mixerControl[x].dwControlID;
mixerControlDetails.cChannels = 1 ;
mixerControlDetails.cMultipleItems = 0 ;
mixerControlDetails.cbDetails = sizeof( MIXERCONTROLDETAILS_BOOLEAN ) ;
mixerControlDetails.paDetails = &value ; mmr = mixerGetControlDetails(
( HMIXEROBJ )( hInputMixer ),
&mixerControlDetails,
MIXER_GETCONTROLDETAILSF_VALUE
) ; if ( mmr == MMSYSERR_NOERROR )
{
mmr = mixerSetControlDetails(
( HMIXEROBJ )( hInputMixer ),
&mixerControlDetails,
MIXER_SETCONTROLDETAILSF_VALUE
) ;
}
}
}
}
if (mixerControl)
{
free(mixerControl);
mixerControl=NULL;
}
} mixerClose( (HMIXER)( hInputMixer ) ) ;
}
}BOOL CMediaController::Gips_Connect()
{
int nDeviceID = GetInMediaDevice(GetSelectAudioSource());
DisableMicBoost(nDeviceID);
int nRet=0; if (0!=m_pGipsVoiceEngineLib->GIPSVE_SetSoundDevices(nDeviceID,WAVE_MAPPER))
{
nRet=m_pGipsVoiceEngineLib->GIPSVE_GetLastError();
if (nRet==8020)
{
Gips_StopAudioPlayer();
nRet=m_pGipsVoiceEngineLib->GIPSVE_SetSoundDevices(nDeviceID,WAVE_MAPPER);
Gips_StartAudioPlayer();
}
} m_pGipsVoiceEngineLib->GIPSVE_SetMicVolume(50);
m_pGipsVoiceEngineLib->GIPSVE_SetSpeakerVolume(50);//这里怎么获取系统音量的初始值?
.............
return TRUE;
}
如上GIPSVE_SetSpeakerVolume怎么获取系统音量的初始值?谢谢!!
解决方案 »
- CHtmlView类定制的浏览器下载功能功能
- WINSOCK API 编程漏洞!
- 使用getHostName方式获取的ip地址为空
- 下面这个警告,看了都叫人心寒:截断呀!把一个大的东西放到一个小的东西里,都截断了.不出错我都有点担心
- 我想在vc里面申请一个10M*10M的二位数组,有没有办法啊
- 初始化COM库遇到的问题。
- 请问用CDC类怎样画出填充色是半透明的矩形?有颜色,但是可以看到图形下面的图形。
- 如何不用现有ODBC还能SQL连接?
- nagle算法相关,请教一下
- 请问如何实现无闪烁刷屏,高手回答?
- 如何更好的架构一个界面库,欢迎大家一起讨论
- mfc调用回调函数的时候如何获取定时器的事件号?
GIPSVE_GetSpeakerVolume