C++ C++;Win32-如何使用mciSendString()循环MIDI?
我正在制作一个游戏,并尝试使用mciSendString()循环一个MIDI文件。我看过CProgramming.com,但是示例的窗口对象是OWL,我无法移植它们。我也试着看Brian Gradin的问题,但答案只包含两行代码。我已经看过MSDN了,但这就像是一个参考,而不是一个教程。添加重复不会播放任何内容。这是我目前掌握的代码:C++ C++;Win32-如何使用mciSendString()循环MIDI?,c++,winapi,loops,midi,mci,C++,Winapi,Loops,Midi,Mci,我正在制作一个游戏,并尝试使用mciSendString()循环一个MIDI文件。我看过CProgramming.com,但是示例的窗口对象是OWL,我无法移植它们。我也试着看Brian Gradin的问题,但答案只包含两行代码。我已经看过MSDN了,但这就像是一个参考,而不是一个教程。添加重复不会播放任何内容。这是我目前掌握的代码: mciSendString("open PUG1.MID type sequencer alias music", NULL, 0, NULL); mciSend
mciSendString("open PUG1.MID type sequencer alias music", NULL, 0, NULL);
mciSendString("play music", NULL, 0, NULL);
如果你帮忙的话,我一定会把你列入学分。
谢谢!:)
编辑:我已尝试处理通知标志,但我的代码无法工作。它播放一次主题,然后停止
//At the end of WM_CREATE...
mciSendString("open MUSIC\\PUG2.MID type sequencer alias music", NULL, 0, NULL);
mciSendString("play music", NULL, 0, NULL);
break;
case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music", NULL, 0, NULL);
break;
您可以使用
notify
标志在歌曲结束时获得通知
这似乎有效:
case WM_CREATE:
mciSendString("open pickin0.mid type sequencer alias music", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
使用notify命令时,您需要传递窗口句柄,以便它可以将
MM\u MCINOTIFY
命令发送到某处。您可以使用notify
标志在歌曲结束时收到通知
这似乎有效:
case WM_CREATE:
mciSendString("open pickin0.mid type sequencer alias music", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
使用notify命令时,您需要传递窗口句柄,以便它可以将
MM\u MCINOTIFY
命令发送到某处。您可以使用notify
标志在歌曲结束时收到通知
这似乎有效:
case WM_CREATE:
mciSendString("open pickin0.mid type sequencer alias music", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
使用notify命令时,您需要传递窗口句柄,以便它可以将
MM\u MCINOTIFY
命令发送到某处。您可以使用notify
标志在歌曲结束时收到通知
这似乎有效:
case WM_CREATE:
mciSendString("open pickin0.mid type sequencer alias music", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
case MM_MCINOTIFY:
mciSendString("seek music to start", NULL, 0, NULL);
mciSendString("play music notify", NULL, 0, hWnd);
break;
当您使用notify命令时,您需要传递窗口句柄,以便它可以将
MM\u MCINOTIFY
命令发送到某处。您是否尝试过播放音乐重复
?将其添加到MIDI文件时,它不会播放任何内容。哦,值得一试。似乎您必须按照您提到的问题中的建议手动处理它。如果sequencer支持,notify
标志可能是一种更好的方式。你也可以考虑一个第三方的图书馆。很抱歉我打扰了你,但是你能贴一个例子吗?我的代码似乎不正确。我将编辑该主题。您是否尝试过播放音乐重复?将其添加到MIDI文件时,它不会播放任何内容。哦,值得一试。似乎您必须按照您提到的问题中的建议手动处理它。如果sequencer支持,notify
标志可能是一种更好的方式。你也可以考虑一个第三方的图书馆。很抱歉我打扰了你,但是你能贴一个例子吗?我的代码似乎不正确。我将编辑该主题。您是否尝试过播放音乐重复?将其添加到MIDI文件时,它不会播放任何内容。哦,值得一试。似乎您必须按照您提到的问题中的建议手动处理它。如果sequencer支持,notify
标志可能是一种更好的方式。你也可以考虑一个第三方的图书馆。很抱歉我打扰了你,但是你能贴一个例子吗?我的代码似乎不正确。我将编辑该主题。您是否尝试过播放音乐重复?将其添加到MIDI文件时,它不会播放任何内容。哦,值得一试。似乎您必须按照您提到的问题中的建议手动处理它。如果sequencer支持,notify
标志可能是一种更好的方式。你也可以考虑一个第三方的图书馆。很抱歉我打扰了你,但是你能贴一个例子吗?我的代码似乎不正确。我将编辑这个主题。谢谢你,退休忍者。我一定会把你的名字加到学分上。:)谢谢你,退休的忍者。我一定会把你的名字加到学分上。:)谢谢你,退休的忍者。我一定会把你的名字加到学分上。:)谢谢你,退休的忍者。我一定会把你的名字加到学分上。:)