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,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
MMSYSERR_ALLOCATED
指定的资源已由可能的最大客户端数分配。
MMSYSERR_BADDEVICEID
uMxId 参数指定无效的设备标识符。
MMSYSERR_INVALFLAG
一个或多个标志无效。
MMSYSERR_INVALHANDLE
uMxId 参数指定无效句柄。
MMSYSERR_INVALPARAM
一个或多个参数无效。
MMSYSERR_NODRIVER
uMxId 指定的对象没有可用的混音器设备。 请注意, uMxId 引用的位置也将包含值 –1。
MMSYSERR_NOMEM
无法分配资源。

注解

使用 mixerGetNumDevs 函数确定系统中存在的混音器设备数。 uMxId 指定的设备标识符从 0 到比存在的设备数少 1 不等。

如果选择窗口接收回调信息, 则MM_MIXM_LINE_CHANGEMM_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

另请参阅

音频混音器函数

音频混音器