mciSendString("Play MyMID", NULL, 0, NULL);
可以播放我的MIDI文件,但是播一次就结束了
看了sproll的文档《MCI Command String总览》,似乎循环播放需要加repeat
将语句改为mciSendString("Play MyMID repeat", NULL, 0, NULL);
可是非但没有循环,一次都不播放了
不知我的语句错在了哪里……

解决方案 »

  1.   

    谢谢seacode(听海风)和nuaawenlin(飘人) 
    不过我用mciSendString("repeat Play MyMID",NULL,0,NULL);
    好像同样没有效果
      

  2.   

    这样。首先我不清楚你是否添加了Windows Multimedia Library控件,
    如果没有,记得加上。
    再者,我没用过play,实在不好意思
    只用过mscSendString("Set cdAuio door closed wait",NULL,0,NULL)//打开光驱
    这个是绝对正确的格式,参考这个,看看别的参数该怎么使用
    只能帮你到这里了
      

  3.   

    谢谢seacode:)
    偶是用BCB的,因为我想API调用是MS的老本行,所以就到这里提问
    3x very much!
      

  4.   

    终于搞定了,感谢楼上诸位,特别感谢sproll,好像是VB那块的据sproll说,MIDI设备大概不支持repeat参数
    如果要循环播放的话用其它的方法,比如说在play命令中指定notify消息,然后使用SetW
    indowsHookEx定义你自己的窗体函数,在该函数中对notify消息进行处理。
    但是偶对Hook类的API一直用不好,所以他给的这个方法偶失败了:(偶的解决方法如下,不过代码是BCB的,原理类似
    char retStr[80];
    mciSendString("Status MyMID mode",retStr,80,NULL);
    if(String(retStr).SubString(1,7)=="stopped")
    {
        mciSendString("Seek MyMID to start", NULL, 0, NULL);
        mciSendString("Play MyMID", NULL, 0, NULL);
    }