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
请高手帮忙看看,指点指点。。。
谢谢!!!
------解决方案--------------------帮顶