作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 mci 函数编写一个 mp3 播放器。(win 7 64bit,vs2010,c++)
当我尝试播放带有“wait”标志的 mp3 文件时,我可以听到该文件,但其他一切都卡住了,直到文件播放结束,如果我删除“wait”标志,我可以继续工作但听不到一个东西。
这里是代码示例:
unsigned long __stdcall PlayThread(void *myParam)
{
char* nameOfMp3 = (char*)myParam;
char* cmd = new char[MAX_PATH];
sprintf(cmd,"open \"%s\" type MPEGvideo alias myFile",nameOfMp3);
mciSendString(cmd,NULL,0,0);
mciSendString("play myFile wait",NULL,0,0);//here is the "wait" flag
mciSendString("close myFile",NULL,0,0);
return 0;
}
我删除了对 mci 推荐的返回值的检查,但我已经检查了它们并且在两种情况下它们都很好。
我做错了什么吗?
最佳答案
如果你删除你的 wait
标志,你不能让下一行关闭你的文件( close myFile
)因为你没有给播放时间发生。
启用此标志后,您确实可以等到被调用的函数完成。您实际上可以播放文件的原因。如果您删除了它,它将启动播放并在关闭后立即。
要在使用后关闭您的文件,您需要以某种方式等待或测试您的媒体播放完毕。您可以通过执行以下 mciSendString("status myFile mode")
定期测试 status
来实现此目的。可能的值是“未准备好”、“暂停”、“正在播放”和“已停止”,如 status documentation 中所述。 .
我认为你从那里获得了足够的信息来完成它;)
快乐编码。
关于c++ - mciSendString 必须有 "wait"才能听到声音吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962645/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: The element ‘behavior’ has invalid child element ‘myFa
我是一名优秀的程序员,十分优秀!