mixerOpen 函数 (mmeapi.h)
mixerOpen 函数打开指定的混音器设备,并确保在应用程序关闭句柄之前不会删除该设备。
语法
MMRESULT mixerOpen(
LPHMIXER phmx,
UINT uMxId,
DWORD_PTR dwCallback,
DWORD_PTR dwInstance,
DWORD fdwOpen
);
parameters
phmx
指向变量的指针,该变量将接收标识打开的混音器设备的句柄。 调用其他混音器函数时,使用此句柄标识设备。 此参数不能为 NULL。
uMxId
要打开的混音器设备的标识符。 使用有效的设备标识符或任何 HMIXEROBJ (有关 mixer 对象句柄) 的说明,请参阅 mixerGetID 函数。 音频混音器设备的“映射器”当前不存在,因此混音器设备标识符 -1 无效。
dwCallback
当与正在打开的设备关联的音频线和/或控件的状态发生更改时调用的窗口的句柄。 如果未使用回调机制,则为此参数指定 NULL 。
dwInstance
保留。 必须为零。
fdwOpen
用于打开设备的标志。 定义了以下值。
值 | 含义 |
---|---|
CALLBACK_WINDOW | 假定 dwCallback 参数是 HWND) (窗口句柄。 |
MIXER_OBJECTF_AUX | uMxId 参数是辅助设备标识符,其范围为 0 到 1,比 auxGetNumDevs 函数返回的设备数少 1。 |
MIXER_OBJECTF_HMIDIIN | uMxId 参数是 MIDI 输入设备的句柄。 此句柄必须由 midiInOpen 函数返回。 |
MIXER_OBJECTF_HMIDIOUT | uMxId 参数是 MIDI 输出设备的句柄。 此句柄必须由 midiOutOpen 函数返回。 |
MIXER_OBJECTF_HMIXER | uMxId 参数是由 mixerOpen 函数返回的混音器设备句柄。 此标志是可选的。 |
MIXER_OBJECTF_HWAVEIN | uMxId 参数是由 waveInOpen 函数返回的波形音频输入句柄。 |
MIXER_OBJECTF_HWAVEOUT | uMxId 参数是由 waveOutOpen 函数返回的波形音频输出句柄。 |
MIXER_OBJECTF_MIDIIN | uMxId 参数是 MIDI 输入设备的标识符。 此标识符的范围必须为 0 到 1,小于 midiInGetNumDevs 函数返回的设备数。 |
MIXER_OBJECTF_MIDIOUT | uMxId 参数是 MIDI 输出设备的标识符。 此标识符的范围必须为 0 到 1,小于 midiOutGetNumDevs 函数返回的设备数。 |
MIXER_OBJECTF_MIXER | uMxId 参数是一个混音器设备标识符,其范围为 0 到 1,小于 mixerGetNumDevs 函数返回的设备数。 此标志是可选的。 |
MIXER_OBJECTF_WAVEIN | uMxId 参数是波形音频输入设备的标识符,其范围为 0 到 1,小于 waveInGetNumDevs 函数返回的设备数。 |
MIXER_OBJECTF_WAVEOUT | uMxId 参数是波形音频输出设备的标识符,其范围为 0 到比 waveOutGetNumDevs 函数返回的设备数少 1。 |
返回值
如果成功 , 则返回MMSYSERR_NOERROR,否则返回错误。 可能的错误值包括以下内容。
返回代码 | 说明 |
---|---|
|
指定的资源已由可能的最大客户端数分配。 |
|
uMxId 参数指定无效的设备标识符。 |
|
一个或多个标志无效。 |
|
uMxId 参数指定无效句柄。 |
|
一个或多个参数无效。 |
|
uMxId 指定的对象没有可用的混音器设备。 请注意, uMxId 引用的位置也将包含值 –1。 |
|
无法分配资源。 |
注解
使用 mixerGetNumDevs 函数确定系统中存在的混音器设备数。 uMxId 指定的设备标识符从 0 到比存在的设备数少 1 不等。
如果选择窗口接收回调信息, 则MM_MIXM_LINE_CHANGE 和 MM_MIXM_CONTROL_CHANGE 消息将发送到窗口过程函数,以指示音频线路或控件状态何时更改。 对于这两条消息, wParam 参数是混音器设备的句柄。 lParam 参数是MM_MIXM_LINE_CHANGE的行标识符或已更改状态MM_MIXM_CONTROL_CHANGE的控制标识符。
若要查询音频混音器支持或媒体设备,请使用 mixerGetID 函数。
在 64 位系统上,在 uMxId 参数中传递 64 位 LPHWAVEOUT 指针的情况下,此函数可能无法按预期工作,因为 uMxId 参数被截断为 32 位。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | mmeapi.h (包括 Windows.h) |
Library | Winmm.lib |
DLL | Winmm.dll |