mciSendString循环播放出错

favorit 2003-05-16 10:03:37
mciSendString("Play MyMID", NULL, 0, NULL);
可以播放我的MIDI文件,但是播一次就结束了
看了sproll的文档《MCI Command String总览》,似乎循环播放需要加repeat
将语句改为mciSendString("Play MyMID repeat", NULL, 0, NULL);
可是非但没有循环,一次都不播放了
不知我的语句错在了哪里……
...全文
342 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
favorit 2003-05-18
  • 打赏
  • 举报
回复
终于搞定了,感谢楼上诸位,特别感谢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);
}
everlasting 2003-05-18
  • 打赏
  • 举报
回复
up
seacode 2003-05-16
  • 打赏
  • 举报
回复
错了,应该是关闭光驱
seacode 2003-05-16
  • 打赏
  • 举报
回复
这样。首先我不清楚你是否添加了Windows Multimedia Library控件,
如果没有,记得加上。
再者,我没用过play,实在不好意思
只用过mscSendString("Set cdAuio door closed wait",NULL,0,NULL)//打开光驱
这个是绝对正确的格式,参考这个,看看别的参数该怎么使用
只能帮你到这里了
favorit 2003-05-16
  • 打赏
  • 举报
回复
谢谢seacode(听海风)和nuaawenlin(飘人)
不过我用mciSendString("repeat Play MyMID",NULL,0,NULL);
好像同样没有效果
nuaawenlin 2003-05-16
  • 打赏
  • 举报
回复
repeat Play MyMID
seacode 2003-05-16
  • 打赏
  • 举报
回复
格式错了吧
favorit 2003-05-16
  • 打赏
  • 举报
回复
为何没看到我的问题?test
favorit 2003-05-16
  • 打赏
  • 举报
回复
favorit 2003-05-16
  • 打赏
  • 举报
回复
up
favorit 2003-05-16
  • 打赏
  • 举报
回复
谢谢seacode:)
偶是用BCB的,因为我想API调用是MS的老本行,所以就到这里提问
3x very much!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧