gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:31:43 25 4
gpt4 key购买 nike

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

当您使用通知命令时,您需要传递您的窗口句柄,以便它可以将 MM_MCINOTIFY 命令发送到某处。

关于C++ Win32 - 如何使用 mciSendString() 循环 MIDI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com