我需要将窗口的体积设置为固定的40%或50%如何? 以下仅将其设置为上一个值+新值而不是固定值。
#include <windows.h>
#pragma comment(lib, "winmm")
// to mute:
waveOutSetVolume(NULL, 0);
// full volume:
waveOutSetVolume(NULL, 0xFFFF);
答案 0 :(得分:1)
waveOutSetVolume的文档说明了如何解释 dwVolume 参数:
低位字包含左声道音量设置,高位字包含右声道设置。 [...]
如果设备不支持左右音量控制,则dwVolume的低位字指定音量级别,忽略高位字。
换句话说,您必须为卷构造DWORD
值,其中高阶和低阶字都是相同的值(介于0和65535之间)。
以下函数根据指定百分比的整数输入返回适当的值:
DWORD VolumeValue( const int percentage ) {
// Clamp percentage value
int p = min( 100, max( 0, percentage ) );
// Calculate scaled value for one channel
const WORD wVol = static_cast<WORD>( ::MulDiv( 65535, p, 100 ) );
// Construct return value for both channels
const DWORD retVal = ( ( wVol << 16 ) | wVol );
return retVal;
}