0

我正在制作一个游戏,我正在尝试使用 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;
4

1 回答 1

3

您可以使用该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命令发送到某处。

于 2014-03-25T21:58:35.667 回答