首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MCISendString的Win32 - Midi循环

使用MCISendString的Win32 - Midi循环
EN

Stack Overflow用户
提问于 2013-05-30 14:37:43
回答 2查看 1.9K关注 0票数 5

我正在制作一个游戏,我使用midi文件作为背景音乐。下面是我目前使用的代码:

代码语言:javascript
复制
void Game::play_music()
{
    // Start the music:
    if(map.levelnumber % 2 == 0)
    {
        mciSendString(L"open MUSIC01.MID type sequencer alias Music1", NULL, 0, NULL);
        mciSendString(L"play Music1", NULL, 0, NULL);
        playing = "Music1";
    } else {
        mciSendString(L"open MUSIC02.MID type sequencer alias Music2", NULL, 0, NULL);
        mciSendString(L"play Music2", NULL, 0, NULL);
        playing = "Music2";
    }
}

这很有效,除了它只播放一次歌曲。我试图通过在mci play命令中添加"repeat“来循环它,但是它根本不播放任何东西。我怎样才能循环播放音乐?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-01 15:33:33

我查看了MSDN上的多媒体命令字符串参考,发现

代码语言:javascript
复制
TCHAR tch[100];
mciSendString("status [alias] mode", tch, 100, NULL);

如果它停止了,我只需要使用“寻找别名来启动”命令来重新加载midi文件。我应该提一下,这会在计算过程中造成延迟--所以如果你不把它放在单独的线程中,你的程序就会死机。

票数 2
EN

Stack Overflow用户

发布于 2014-09-18 22:38:11

我知道我来晚了一点,但我刚刚遇到(并解决了)这个问题:

代码语言:javascript
复制
mciSendString("seek [alias] to start", tch, 100, NULL);

这适用于简单的.wav文件,我想它也适用于.mid。当我想播放一个打开的文件时,我只需要发送两个命令:

代码语言:javascript
复制
mciSendString("seek [alias] to start",NULL,100,NULL);
mciSendString("play [alias]",NULL,0,NULL);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16829520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档