我用DirectShow写的播放视频,调用接口IBasicAudio* m_pBasicAudio; //设置音频流的大小和平衡我在一个视频播放对话框中响应键盘消息控制音量大小
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;
}音量的控制由 m_pBasicAudio完成
//音量控制
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);
}
}
可是无论怎么加减音量。获取的音量总是零:即m_Volume = m_pBasicAudio->get_Volume(&m_Volume);总是得到零,以致于键盘响应函数中long Volume = 100 + (long)dwVal *0.01;总得到100.音量显示就总是100请高手帮忙看看,指点指点
谢谢!!!