2017-01-28 2 views
0

Мне нужно установить объем окон на фиксированные 40% или 50% как? После этого установите только предыдущее значение + новое значение не на фиксированное значение.Как изменить объем окон?

#include <windows.h> 
#pragma comment(lib, "winmm") 

// to mute: 
waveOutSetVolume(NULL, 0); 

// full volume: 
waveOutSetVolume(NULL, 0xFFFF); 

ответ

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; 
} 
+0

https://paste.ubuntu.com/23898336/ - по какой-то причине его до сих пор не работает? Есть идеи. – YumYumYum