繁体   English   中英

C ++ Win32-如何使用mciSendString()循环MIDI?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM