不要用mci函数,也不要叫我看其他的,前者不合适,后者已看过。

我在visual c++上做midi文件的播放,要用midi函数,求助midiStreamOut函数第二个参数LPMIDIHDR lpMidiHdr, 要怎么获取。

临摹微笑
浏览 95回答 2
2回答

aluckdog

自己定一个变量。MIDIHDR midiHdr;midiOutPrepareHeader(handle, &midiHdr, sizeof(MIDIHDR));midiStreamOut(handle, &midiHdr, sizeof(MIDIHDR));

弑天下

那是MIDI文件里的数据了,你需要分析MIDI文件结构,读出它的数据,把数据缓冲区赋给lpData。有个例子是自己写数据的: unsigned&nbsp;long&nbsp;Phrase[]&nbsp;=&nbsp;{0,&nbsp;0,&nbsp;((unsigned&nbsp;long)MEVT_LONGMSG<<24)&nbsp;|&nbsp;8,&nbsp;0x047F7FF0,&nbsp;0xF77F7F01, 0,&nbsp;0,&nbsp;((unsigned&nbsp;long)MEVT_TEMPO<<24)&nbsp;|&nbsp;0x0007A120, 0,&nbsp;0,&nbsp;0x007F3C90, 48,&nbsp;0,&nbsp;0x00003C90, 0,&nbsp;0,&nbsp;0x007F3C90, 48,&nbsp;0,&nbsp;0x00003C90, 0,&nbsp;0,&nbsp;0x007F4390, 48,&nbsp;0,&nbsp;0x00004390, 0,&nbsp;0,&nbsp;0x007F4390, 48,&nbsp;0,&nbsp;0x00004390, 0,&nbsp;0,&nbsp;0x007F4590, 48,&nbsp;0,&nbsp;0x00004590, 0,&nbsp;0,&nbsp;0x007F4590, 48,&nbsp;0,&nbsp;0x00004590, 0,&nbsp;0,&nbsp;0x007F4390, 86,&nbsp;0,&nbsp;0x00004390, 10,&nbsp;0,&nbsp;0x007F4190, 48,&nbsp;0,&nbsp;0x00004190, 0,&nbsp;0,&nbsp;0x007F4190, 48,&nbsp;0,&nbsp;0x00004190, 0,&nbsp;0,&nbsp;0x007F4090, 48,&nbsp;0,&nbsp;0x00004090, 0,&nbsp;0,&nbsp;0x007F4090, 48,&nbsp;0,&nbsp;0x00004090, 0,&nbsp;0,&nbsp;0x007F3E90, 48,&nbsp;0,&nbsp;0x00003E90, 0,&nbsp;0,&nbsp;0x007F3E90, 48,&nbsp;0,&nbsp;0x00003E90, 0,&nbsp;0,&nbsp;0x007F3C90, 96,&nbsp;0,&nbsp;0x00003C90}; midiHdr.lpData&nbsp;=&nbsp;(LPBYTE)&Phrase[0]; midiHdr.dwBufferLength&nbsp;=&nbsp;midiHdr.dwBytesRecorded&nbsp;=&nbsp;sizeof(Phrase); midiHdr.dwFlags&nbsp;=&nbsp;0;
打开App,查看更多内容
随时随地看视频慕课网APP