我正在尝试使用mci函数编写一个mp3播放器。(win 7 64bit,vs2010,c ++)
当我尝试播放带有“等待”标志的mp3文件时,我可以听到该文件但其他一切都被卡住,直到文件结束播放,如果我删除标志“等待”我可以继续工作但是听不到一件事。
以下是代码示例:
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表彰的返回值的检查,但我已经把它们弄得很糟糕,两种情况都没问题。
我做错了什么?答案 0 :(得分:4)
如果您删除wait
标记,则无法关闭文件的下一行(close myFile
),因为您没有给出播放时间。< / p>
启用此标志后,您确实可以等到被调用函数完成。您可以实际播放文件的原因。如果您将其删除,它将启动播放,并在关闭后立即 。
要在使用后关闭文件,您需要以某种方式等待或测试您的媒体播放完毕。您可以通过执行以下status
定期测试mciSendString("status myFile mode")
来实现此目的。可能的值是&#34;未准备好&#34;,&#34;暂停&#34;,&#34;播放&#34;,&#34;停止&#34;如status documentation。
我认为你有足够的信息来完成它;)
快乐的编码。