WinAPI: midiOutShortMsg - 向输出设备发送 MIDI 短消息

提示: 此函数可以发送系统专用消息以外的任何 MIDI 消息; 直到已经发送给输出设备才返回.
//声明:
midiOutShortMsg(
  hMidiOut: HMIDIOUT; {设备句柄}
  dwMsg: DWORD        {MIDI 消息; 消息是 2 字节, 第一字节在低位}
): MMRESULT;          {成功返回 0; 可能的错误值见下:}

MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
MIDIERR_NOTREADY     = 67; {设备忙于其他数据}

 
 
 
 
 

 

 

  

//举例:


 
 
 
 
 

 

 

  

转载于:https://my.oschina.net/hermer/blog/320375

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`midiOutLongMsg` 是 Windows API 中的一个函数,用于将 MIDI 消息发送到指定的 MIDI 设备。它的函数原型如下: ```c++ MMRESULT midiOutLongMsg( HMIDIOUT hMidiOut, LPMIDIHDR lpMidiOutHdr, UINT cbMidiOutHdr ); ``` 其中,`hMidiOut` 是 MIDI 设备的句柄,可以通过 `midiOutOpen` 函数来获取;`lpMidiOutHdr` 是指向包含 MIDI 消息的 `MIDIHDR` 结构体指针;`cbMidiOutHdr` 是 `MIDIHDR` 结构体的大小,可以使用 `sizeof` 函数获取。 使用 `midiOutLongMsg` 函数发送 MIDI 消息的步骤如下: 1. 创建一个 `MIDIHDR` 结构体,并分配足够的内存空间; 2. 将 MIDI 消息数据复制到 `MIDIHDR` 结构体的 `lpData` 字段中; 3. 调用 `midiOutPrepareHeader` 函数来准备 `MIDIHDR` 结构体; 4. 调用 `midiOutLongMsg` 函数将 MIDI 消息发送MIDI 设备; 5. 调用 `midiOutUnprepareHeader` 函数释放 `MIDIHDR` 结构体。 下面是一个简单的示例代码: ```c++ // 打开 MIDI 设备 HMIDIOUT hMidiOut; midiOutOpen(&hMidiOut, MIDI_MAPPER, 0, 0, CALLBACK_NULL); // 构造 MIDI 消息 BYTE midiData[3] = {0x90, 60, 100}; // Note On 消息 MIDIHDR midiHdr; midiHdr.lpData = (LPSTR)midiData; midiHdr.dwBufferLength = sizeof(midiData); midiHdr.dwFlags = 0; // 准备 MIDI 消息 midiOutPrepareHeader(hMidiOut, &midiHdr, sizeof(MIDIHDR)); // 发送 MIDI 消息 midiOutLongMsg(hMidiOut, &midiHdr, sizeof(MIDIHDR)); // 释放 MIDI 消息 midiOutUnprepareHeader(hMidiOut, &midiHdr, sizeof(MIDIHDR)); // 关闭 MIDI 设备 midiOutClose(hMidiOut); ``` 注意,`midiOutLongMsg` 函数一次只能发送一个 MIDI 消息,如果需要同时发送多个 MIDI 消息,可以通过创建多个 `MIDIHDR` 结构体的方式来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值