C++ mciSendString是否必须有;“等等”;为了听到声音?
我正在尝试使用mci函数编写一个mp3播放器 当我尝试播放带有“wait”标志的mp3文件时,我可以听到该文件,但其他所有内容都会被卡住,直到文件播放结束。如果我删除“wait”标志,我可以继续工作,但什么也听不见 以下是代码示例:C++ mciSendString是否必须有;“等等”;为了听到声音?,c++,audio,mp3,audio-player,mci,C++,Audio,Mp3,Audio Player,Mci,我正在尝试使用mci函数编写一个mp3播放器 当我尝试播放带有“wait”标志的mp3文件时,我可以听到该文件,但其他所有内容都会被卡住,直到文件播放结束。如果我删除“wait”标志,我可以继续工作,但什么也听不见 以下是代码示例: unsigned long __stdcall PlayThread(void *myParam) { char* nameOfMp3 = (char*)myParam; char* cmd = new char[MAX_PATH]; sp
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的返回值的检查,但是我已经检查了它们,并且在这两种情况下它们都很好
我做错什么了吗?如果您删除
等待
标志,您就不能让下一行关闭您的文件(关闭我的文件
),因为您没有给播放留出时间
启用此标志确实允许您等待调用的函数完成。您可以实际播放文件的原因。如果您将其移除,它将启动播放,并在关闭后立即
要在使用后关闭文件,您需要等待或测试媒体是否已播放完毕。您可以通过定期测试状态
来实现这一点,方法是执行以下mciSendString(“状态myFile模式”)
。可能的值为“未准备就绪”、“暂停”、“播放”和“停止”,如中所述
我认为你有足够的信息来完成它;)
快乐编码