-2

我的程序需要检索卷信息。我一直在使用各种方法,waveOutGetVolume()但没有运气提取 0 到 100 之间的值。

我也尝试过使用 HIWORD 和 LOWORD 值。

例如,我的音量目前为 14%。我的程序显示一个完全随机的数字。

DWORD volume;
HWAVEOUT hwo;
waveOutGetVolume(hwo, &volume);

有人可以告诉我哪里出错了吗?

谢谢

4

1 回答 1

3

仔细阅读文档,上面写着:

pdw卷

指向要填充当前音量设置的变量的指针。该位置的低位字包含左声道音量设置,高位字包含右声道设置。0xFFFF 值表示全音量,0x0000 值表示静音。

如果设备不支持左右音量控制,则指定位置的低位字包含单声道音量级别。

因此,您需要使用适当的掩码对结果进行位和结果:

DWORD volume;
HWAVEOUT hwo;
// retrieve the handle
waveOutGetVolume(hwo, &volume);
// don't forget to check for errors

WORD left_channel_volume = volume & 0xffff;           // extract the low order word
WORD right_channel_volume = (volume >> 16) & 0xffff;  // extract the high order word

unsigned left_volume_percent = left_channel_volume / 0xffff;
于 2012-08-06T14:37:56.990 回答