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

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()循环一个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\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
标志可能是一种更好的方式。你也可以考虑一个第三方的图书馆。很抱歉我打扰了你,但是你能贴一个例子吗?我的代码似乎不正确。我将编辑这个主题。谢谢你,退休忍者。我一定会把你的名字加到学分上。:)谢谢你,退休的忍者。我一定会把你的名字加到学分上。:)谢谢你,退休的忍者。我一定会把你的名字加到学分上。:)谢谢你,退休的忍者。我一定会把你的名字加到学分上。:)