使用事件回调管理缓冲播放

若要使用事件回调,请使用 CreateEvent 函数检索事件的句柄。 在调用 midiOutOpen 函数时,为 dwFlags 参数指定CALLBACK_EVENT。 在使用 midiOutPrepareHeader 函数之后,但在将 MIDI 事件发送到设备之前,请通过调用 ResetEvent 函数并指定 CreateEvent 检索到的事件句柄来创建非签名事件。 然后,在检查是否在 MIDIHDR 结构的 dwFlags 成员中设置了MHDR_DONE位的循环中,使用 WaitForSingleObject 函数,将事件句柄和 INFINITE 超时值指定为参数。

事件回调是由可能导致函数回调的任何内容设置的。

由于事件回调不会收到特定的关闭、完成或打开通知,因此应用程序可能需要检查事件发生后正在等待的进程的状态。 在 WaitForSingleObject 返回之前,可能会完成许多任务。