c++ Win32 -如何使用mciSendString()循环midi

C++ Win32 - How to loop MIDIs with mciSendString()?

本文关键字:循环 midi mciSendString 何使用 Win32 c++      更新时间:2023-10-16

我正在制作一款游戏,我正在尝试使用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命令。