用 mixer系列函数写显示音频音量幅度的程序有问题,高手请进!!
程序源码如下:
HMIXER m_hMixer;
m_nNumMixers = ::mixerGetNumDevs();
m_hMixer = NULL;
::ZeroMemory(&m_mxcaps, sizeof(MIXERCAPS));
// open the first mixer
// A "mapper" for audio mixer devices does not currently exist.
if (m_nNumMixers != 0)
{
if (::mixerOpen(&m_hMixer,0,0,NULL,MIXER_OBJECTF_MIXER)
!= MMSYSERR_NOERROR)
return FALSE;
if (::mixerGetDevCaps((UINT)m_hMixer, &m_mxcaps, sizeof(MIXERCAPS))!= MMSYSERR_NOERROR)
return FALSE;
}
if (m_hMixer == NULL)
return FALSE;
// get dwLineID
MIXERLINE mxl;
mxl.cbStruct = sizeof(MIXERLINE);
// mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
if (::mixerGetLineInfo((HMIXEROBJ)m_hMixer,&mxl, MIXER_OBJECTF_HMIXER |MIXER_GETLINEINFOF_COMPONENTTYPE)!= MSYSERR_NOERROR)
return FALSE;
// get dwControlID
MIXERCONTROL mxc;
MIXERLINECONTROLS mxlc;
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_PEAKMETER;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxc;
MMRESULT mmresult;
mmresult = ::mixerGetLineControls((HMIXEROBJ)m_hMixer, &mxlc,MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (mmresult != MMSYSERR_NOERROR)
{
AfxMessageBox("MMSYSERR_NOERROR");
return FALSE;
}
运行到此处出现错误, 错误为: MIXERR_INVALCONTROL ,是什么原因!!
高手赐教!!