midiOutSetVolume 函数 (mmeapi.h)

midiOutSetVolume 函数设置 MIDI 输出设备的音量。

语法

MMRESULT midiOutSetVolume(
  HMIDIOUT hmo,
  DWORD    dwVolume
);

参数

hmo

打开的 MIDI 输出设备的句柄。 此参数还可以包含 MIDI 流的句柄,只要它被强制转换为 HMIDIOUT 即可。 此参数也可以是设备标识符。

dwVolume

新卷设置。 低序字包含左声道音量设置,高序字包含右声道设置。 值 0xFFFF 表示完整音量,值 0x0000 表示静音。

如果设备不支持左右音量控制,则 dwVolume 的低序字将指定单声道音量级别,高序字将被忽略。

返回值

如果成功,则返回MMSYSERR_NOERROR,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
MMSYSERR_INVALHANDLE
指定的设备句柄无效。
MMSYSERR_NOMEM
系统无法分配或锁定内存。
MMSYSERR_NOTSUPPORTED
不支持 函数。

注解

如果使用设备标识符,则 midiOutSetVolume 调用的结果将应用于设备的所有实例。 如果使用设备句柄,则结果仅适用于设备句柄引用的设备实例。

并非所有设备都支持卷更改。 通过使用 midiOutGetDevCaps 函数和 MIDICAPS_VOLUME 标志查询设备,可以确定设备是否支持该设备。

还可以通过使用 midiOutGetDevCaps 函数和 MIDICAPS_LRVOLUME 标志查询设备,来确定设备是否支持左右通道的音量控制。

不支持完全 16 位卷级控制的设备使用所请求卷设置的高阶位。 例如,支持 4 位音量控制的设备为以下卷级别值生成相同的音量设置:0x4000、0x43be和0x4fff。 midiOutGetVolume 函数返回由 midiOutSetVolume 设置的完整 16 位值,无论设备的功能如何。

卷设置以对数方式解释。 这意味着,将音量级别从 0x5000 增加到 0x6000 时,感知到的音量增加与从 0x4000 增加到 0x5000 相同。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mmeapi.h (包括 Windows.h)
Library Winmm.lib
DLL Winmm.dll

另请参阅

MIDI 函数