midiOutOpen 函数 (mmeapi.h)

midiOutOpen 函数可打开 MIDI 输出设备进行播放。

语法

MMRESULT midiOutOpen(
  LPHMIDIOUT phmo,
  UINT       uDeviceID,
  DWORD_PTR  dwCallback,
  DWORD_PTR  dwInstance,
  DWORD      fdwOpen
);

parameters

phmo

指向 HMIDIOUT 句柄的指针。 此位置由标识打开的 MIDI 输出设备的句柄填充。 句柄用于在调用其他 MIDI 输出函数时标识设备。

uDeviceID

要打开的 MIDI 输出设备的标识符。

dwCallback

指向回调函数、事件句柄、线程标识符或在 MIDI 播放期间调用的窗口或线程句柄的指针,以处理与播放进度相关的消息。 如果不需要任何回调,请为此参数指定 NULL 。 有关回调函数的详细信息,请参阅 MidiOutProc

dwInstance

传递给回调的用户实例数据。 此参数不与窗口回调或线程一起使用。

fdwOpen

用于打开设备的回调标志。 它可以是以下值。

含义
CALLBACK_EVENT dwCallback 参数是事件句柄。 此回调机制仅用于输出。
CALLBACK_FUNCTION dwCallback 参数是回调函数地址。
CALLBACK_NULL 没有回调机制。 此值是默认设置。
CALLBACK_THREAD dwCallback 参数是线程标识符。
CALLBACK_WINDOW dwCallback 参数是窗口句柄。

返回值

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

返回代码 说明
MIDIERR_NODEVICE
找不到 MIDI 端口。 仅当映射器打开时,才会发生此错误。
MMSYSERR_ALLOCATED
已分配指定的资源。
MMSYSERR_BADDEVICEID
指定的设备标识符在范围外。
MMSYSERR_INVALPARAM
指定的指针或结构无效。
MMSYSERR_NOMEM
系统无法分配或锁定内存。

注解

若要确定系统中存在的 MIDI 输出设备数,请使用 midiOutGetNumDevs 函数。 wDeviceID 指定的设备标识符从 0 到 1 不等,比存在的设备数少一个。 MIDI_MAPPER还可以用作设备标识符。

如果选择窗口或线程接收回调信息,则会将以下消息发送到窗口过程或线程,以指示 MIDI 输出的进度: MM_MOM_OPENMM_MOM_CLOSEMM_MOM_DONE

如果选择函数接收回调信息,则会将以下消息发送到该函数以指示 MIDI 输出的进度: MOM_OPENMOM_CLOSEMOM_DONE

要求

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

另请参阅

MIDI 函数