[英]C++ Win32 - How to loop MIDIs with mciSendString()?
我正在做一个游戏,我试图用mciSendString()循环MIDI文件。 我查看了CProgramming.com,但示例的窗口对象是OWL,无法移植它们。 我还尝试查看Brian Gradin的问题,但答案仅包含两行代码。 我看过MSDN,但这就像参考,而不是教程。 添加重复不会起到任何作用。 这是我到目前为止的代码:
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_MCINOTIFY
命令发送到某个地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.