我的程序需要检索卷信息。我一直在使用各种方法,waveOutGetVolume()
但没有运气提取 0 到 100 之间的值。
我也尝试过使用 HIWORD 和 LOWORD 值。
例如,我的音量目前为 14%。我的程序显示一个完全随机的数字。
DWORD volume;
HWAVEOUT hwo;
waveOutGetVolume(hwo, &volume);
有人可以告诉我哪里出错了吗?
谢谢
我的程序需要检索卷信息。我一直在使用各种方法,waveOutGetVolume()
但没有运气提取 0 到 100 之间的值。
我也尝试过使用 HIWORD 和 LOWORD 值。
例如,我的音量目前为 14%。我的程序显示一个完全随机的数字。
DWORD volume;
HWAVEOUT hwo;
waveOutGetVolume(hwo, &volume);
有人可以告诉我哪里出错了吗?
谢谢
仔细阅读文档,上面写着:
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;