如何从程序中改变音量?

博客介绍了在程序中改变音量的方法。指出仅修改注册表键不能改变音量,建议使用waveOutSetVolume函数。该函数可设置波形音频输出设备音量,给出了设置音量的代码示例,还介绍了使用百分比设置音量的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何从程序中改变音量?

尽管有一个注册表键(HKEY_CURRENT_USER\ControlPanel\Volume\Volume),每次在控制面板中改变声音设置它也随之改变,不过看起来仅仅改变这个设置不能改变音量。我建议使用另外一种改变音量的途径。这个途径就是使用waveOutSetVolume函数。如果你用这个函数改变音量,控制面板中的设置不被改变,但是实际的音量将被改变。

waveOutSetVolume函数设置某个波形音频输出设备的音量。假设在我们的Pocket PC上仅仅有一个音频输出设备,能够找到第一个设备然后设置它的音量。音量在00xFFFF的范围内。

void SetSoundVolume(DWORD dwVolume) {

WAVEFORMATEX wf;

wf.wFormatTag = WAVE_FORMAT_PCM;

wf.nChannels = 1;

wf.nSamplesPerSec = 8000 * 1000;

wf.wBitsPerSample = 8;wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;

wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign;

wf.cbSize = 0;

HWAVEOUT hwo;

for (UINT id = 0; id < waveOutGetNumDevs(); id++) {

if (waveOutOpen(&hwo, id, &wf, 0, 0, CALLBACK_NULL)

== MMSYSERR_NOERROR)

{

waveOutSetVolume(hwo, dwVolume);

waveOutClose(hwo);

break;

}

}

}

百分比音量:如果你想使用百分比设置音量,而不使用00xFFFF范围,那么你可以用下面的代码:

DWORD dwSoundVolumePercents = 50;

SetSoundVolume( (DWORD)(0xFFFF*1.0*dwSoundVolumePercents/100.0) );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值