织梦CMS - 轻松建站从此开始!

罗索

关于winCE中用程序(EVC)调节音量的问题

jackyhwei 发布于 2009-12-23 17:10 点击:次 
尽管有一个注册表键(HKEY_CURRENT_USER\ControlPanel\Volume\Volume),每次在控制面板中改变声音设置它也随之改变,不过看起来仅仅改变这个设置不能改变音量。我建议使用另外一种改变音量的途径。这个途径就是使用waveOutSetVolume函数。
TAG:

 

尽管有一个注册表键(HKEY_CURRENT_USER\ControlPanel\Volume\Volume),每次在控制面板中改变声音设置它也随之改变,不过看起来仅仅改变这个设置不能改变音量。我建议使用另外一种改变音量的途径。这个途径就是使用waveOutSetVolume函数。如果你用这个函数改变音量,控制面板中的设置不被改变,但是实际的音量将被改变。  
   
  使用waveOutSetVolume  
  waveOutSetVolume函数设置某个波形音频输出设备的音量。假设在我们的Pocket   PC上仅仅有一个音频输出设备,能够找到第一个设备然后设置它的音量。音量在0和0xFFFF的范围内。  

  1. void   SetSoundVolume(DWORD   dwVolume)   {    
  2. WAVEFORMATEX   wf;    
  3. wf.wFormatTag   =   WAVE_FORMAT_PCM;    
  4. wf.nChannels   =   1;    
  5. wf.nSamplesPerSec   =   8000   *   1000;    
  6. wf.wBitsPerSample   =   8;    
  7. wf.nBlockAlign   =   wf.nChannels   *   wf.wBitsPerSample   /   8;    
  8. wf.nAvgBytesPerSec   =   wf.nSamplesPerSec   *   wf.nBlockAlign;    
  9. wf.cbSize   =   0;    
  10.    
  11. HWAVEOUT   hwo;    
  12. for   (UINT   id   =   0;   id   <   waveOutGetNumDevs();   id++)   {    
  13. if   (waveOutOpen(&hwo,   id,   &wf,   0,   0,   CALLBACK_NULL)      
  14. ==   MMSYSERR_NOERROR)      
  15. {    
  16. waveOutSetVolume(hwo,   dwVolume);      
  17. waveOutClose(hwo);    
  18. break;    
  19. }    
  20. }    
  21. }    

  百分比音量  
  如果你想使用百分比设置音量,而不使用0到0xFFFF范围,那么你可以用下面的代码: 
  DWORD   dwSoundVolumePercents   =   50; 
  SetSoundVolume(   (DWORD)(0xFFFF*1.0*dwSoundVolumePercents/100.0)   ); 
 

(jacky)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200912/8171.html]
本文出处:网络博客 作者:jacky
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容