加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Win32 – 使用MCISendString进行Midi循环

发布时间:2020-12-16 07:04:37 所属栏目:百科 来源:网络整理
导读:我正在制作游戏,我正在使用midi文件作为背景音乐.这是我目前使用的代码: void Game::play_music(){ // Start the music: if(map.levelnumber % 2 == 0) { mciSendString(L"open MUSIC01.MID type sequencer alias Music1",NULL,NULL); mciSendString(L"play
我正在制作游戏,我正在使用midi文件作为背景音乐.这是我目前使用的代码:

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

这很有效,除了它只播放一首歌.我尝试通过在mci play命令中添加“repeat”来循环它,但是它根本不会播放任何内容.我怎样才能循环播放音乐?

解决方法

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

TCHAR tch[100];
mciSendString("status [alias] mode",tch,100,NULL);

将[别名]播放或停止为“tch”.如果它停止了,我只需使用“seek [alias] start”命令重新加载midi文件.我应该提一下,这会导致延迟,而东西是计算或其他什么 – 所以如果你不把它放在一个单独的线程中,你的程序将会冻结.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读