转WaveOutSetVolume

本文详细介绍了在Windows CE系统中如何设置音量,包括使用waveOutSetVolume API改变系统主音量,并结合注册表操作实现一致性。同时,探讨了如何调整硬件按键声音,以及调用未公开的AudioUpdateFromRegistry API来更新系统声音设置。
摘要由CSDN通过智能技术生成

作者: liswei

Walzer声明:此文为我同事所写, 文中参考引用了norains的<WinCE系统音量的设置>一文, 文中的CReg.h则出自微软WINCE500/PUBLIC下的公开代码. 网友若对文中一些技术细节有疑问, 可以移步到norains博客(http://blog.csdn.net/norains/)的相关文章下向norains请教

 

-----------------
最近一段时间在修改音量需求变化的时候,让我对在WINCE下对各种音量的设置有了一定的理解,现在将我的理解写到blog上,让各位指教。

首先我们来看下,这些声音设置都在注册表:HKEY_CURRENT_USER/ControlPanel/Volume下,里面的几个键值都是控制声音的。先解释如下:

Volume: 系统的主音量,范围是0x0 ~ 0xFFFFFFFF.
       
Screen: 屏幕敲击声. 当数值为0(或65536)无声,1为柔和,65538为洪亮

Key: 键盘敲击声,数值的意义和Screen相同.
       
Mute: 控制其它静音的选项. 置0x04位为1时允许事件声音,0x02允许应用程序声音,0x01允许警告声.需要注意的是,如果不允许应用程序声音,则警告声位也将被忽略.

知道各个键值的意义后,我从最主要的系统的主音量Volume说起。

一、对系统主音量Volume的操作

首先我们来看一段最简单的改变音量的代码:          

DWORD dwVolume  =   0xAAAAAAAA ;
waveOutSetVolume(
0 ,dwVolume);    

    
waveOutSetVolume()的第一个参数是设备ID,因为需要更改的是整个系统音量,所以在这里直接取0值即可;第二个参数是需要设置的音量数值,范围是从 0x0 ~ 0xFFFFFFFF。

通过waveOutSetVolume()这个API,我们可以很容易的更改系统设备的音量,但这个时候,如果你去查看注册表的Volume的键值是没有变化的,因为它只修改了设备的音量,变化还没有这么快到达注册表。但你可以到“控制面板”中的“音量与声音”打开一下,注册表的值也随之改变。(反之,通过对注册表的单独操作对具体音量是起不到作用的)

所以,我对音量的操作,首先对注册表中的Volume进行操作,在用waveOutSetVolume

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值