DirectShow音量控制获取的音量怎么总是0 - Windows专区 / 非技术区
我用DirectShow写的播放视频,调用接口IBasicAudio* m_pBasicAudio; //设置音频流的大小和平衡
我在一个视频播放对话框中响应键盘消息控制音量大小
[code=C/C++][/code]
if(((GetKeyState(VK_CONTROL) & 0x80) && (GetKeyState(VK_HOME) & 0x80)) || pMsg->wParam == VK_RIGHT )
{
//增加音量
if(m_pTV != NULL)
{
long dwVal = m_pTV->GetVolume();
long Volume = 100 + dwVal *0.01;//把-10000~0转换成0~100
//displayVolumeDlg(Volume);
m_pTV->VolumeAdd();
}
return true;
}
if(((GetKeyState(VK_CONTROL) & 0x80) && (GetKeyState(VK_END) & 0x80) ) || pMsg->wParam == VK_LEFT)
{
//减少音量
if(m_pTV != NULL)
{
long dwVal = m_pTV->GetVolume();
long Volume = 100 + (long)dwVal *0.01;//把-10000~0转换成0~100
//displayVolumeDlg(Volume);
m_pTV->VolumeRelease();
}
return true;
}
if( pMsg->wParam == VK_F8)
{
//设置静音
if(m_pTV != NULL)
{
if(m_ismute)
{
//displayVolumeDlg(m_tempVolume);
long dwVal = (m_tempVolume -100) *100;
m_pTV->SetVolume(dwVal); //恢复静音前的音量
m_ismute = false;
}
else
{
long dwVal = m_pTV->GetVolume();
m_tempVolume = 100 + dwVal *0.01;
//displayVolumeDlg(0);
m_pTV->SetVolume(-10000); //设置静音
m_ismute = true;
}
}
return true;
}
[code=C/C++][/code]
[color=#FF0000][/color]音量的控制由 m_pBasicAudio完成[color=#FF0000][/color]
[code=C/C++][/code]
//音量控制
void CUTIPlayer::VolumeAdd()//增加音量
{
long m_Volume = GetVolume();
m_Volume = m_Volume + 100;
SetVolume(m_Volume);
}
void CUTIPlayer::VolumeRelease()//减少音量
{
long m_Volume = GetVolume();
m_Volume = m_Volume - 100;
SetVolume(m_Volume);
}
long CUTIPlayer::GetVolume()//获取音量
{
long m_Volume ;
if(m_pBasicAudio)
{
m_Volume = m_pBasicAudio->get_Volume(&m_Volume);
}
return m_Volume;
}
void CUTIPlayer::SetVolume(long Volume)//设置音量
{
if(m_pBasicAudio)
{
m_pBasicAudio->put_Volume(Volume);
}
}
[code=C/C++][/code]
可是无论怎么加减音量。获取的音量总是零:即m_Volume = m_pBasicAudio->get_Volume(&m_Volume);总是得到零,以致于键盘响应函数中long Volume = 100 + (long)dwVal *0.01;总得到100.音量显示就总是100
请高手帮忙看看,指点指点。。。
谢谢!!!
------解决方案--------------------帮顶