VC++控制音量

《Visual C++开发技术大全》第26章声音与动画编程,本章讲述在VC 6.0环境下,如何使用Win32、GDI、GDI+、DirectShow等开发接口实现声音与动画的处理。本小节为大家介绍控制音量。

26.1.3  控制音量

Windows API中提供了可以控制音量的接口函数。使用auxGetNumDevs()函数可以获取当前系统中安装的声卡数目。其函数原型为:

  
  
  
  
  1. UINT auxGetNumDevs(VOID); 

此函数的返回值为当前系统中安装的设备数目。如果返回值为0,表示当前系统中没有声卡或有错误发生。auxGetVolume()函数返回指定的音频输出设备的当前音量。其函数原型为:

  
  
  
  
  1. MMRESULT auxGetVolume( UINT uDeviceID,  // 指定
    要查询当前音量的音频设备的标识符  
  2. LPDWORD lpdwVolume);                    // 用于
    存放返回的音频设备的当前音量值 

函数如果返回0xFFFF表示最大音量,返回0x0000表示静音。如果函数调用成功,则返回MMSYSERR_NOERROR。auxSetVolume()函数设置指定音频输出设备的音量。其函数原型为:

  
  
  
  
  1. MMRESULT auxSetVolume( UINT uDeviceID,  // 指定要
    设置音量的音频设备的标识符  
  2. DWORD dwVolume);                        // 指定
    要设置的音频设备的音量 

如果设置音量成功,则返回MMSYSERR_NOERROR。下面的代码结合这3个函数,设置当前音量。

  
  
  
  
  1. void CSoundSampleDlg::OnButtonCtrlvolumn()  // 设置音量  
  2. {  
  3.     MMRESULT mmResult;                     
    // 定义操作结果  
  4.     DWORD dwDevNum;                       
    // 定义设备数目变量  
  5.     dwDevNum = ::auxGetNumDevs();          
    // 获取设备数目  
  6.     if (dwDevNum>0)                        
    // 如果设备数目大于1  
  7.     {  
  8.         DWORD dwVolume1;  
  9.         mmResult=auxGetVolume(AUX_MAPPER, 
    &dwVolume1);  // 获取设备音量  
  10.         if (mmResult != MMSYSERR_NOERROR)       
    // 判断操作结果  
  11.         {  
  12.             if (mmResult == MMSYSERR_
    BADDEVICEID)WriteLog("音频设备无效");  
  13.             else WriteLog("获取当前音频设备的音量失败");  
  14.             return;  
  15.         }  
  16.         UpdateData(false);  
  17.         CString log;  
  18.         DWORD dwVolume2 = m_Volumn;  
  19.         mmResult=auxSetVolume(AUX_MAPPER, 
    dwVolume2);   // 设置音量  
  20.         if (mmResult != MMSYSERR_NOERROR)  
  21.             log.Format("设置音量失败。原来音量=%d", dwVolume1);  
  22.         else  
  23.         log.Format("设置音量成功。原来音量=%d;设
    置后的音量=%d", dwVolume1,  
  24.         dwVolume2);WriteLog(log);  
  25.     }  
  26.     else    WriteLog("没有有效的音频设备");        
    // 输出错误提示  

上面的函数,首先调用auxGetNumDevs()函数获取当前安装的声卡的数目。如果当前系统中安装了声卡,则调用auxGetVolume()函数获取声卡的当前音量,然后调用auxSetVolume()函数设置用户指定的音量。


http://book.51cto.com/art/201008/216717.htm

你可能感兴趣的:(VC++控制音量)