mciSendString随机停止工作

mciSendString randomly stops working

本文关键字:停止工作 随机 mciSendString      更新时间:2023-10-16

我的代码

    char MusicLoc [50][200];
    char Music [50][50];
    int MusicBox(int IndexMusic)
    {
    std::string rawloc = ((std::string)"open ""+MusicLoc[IndexMusic]+Music[IndexMusic]+""type mpegvideo alias "+Music[IndexMusic]);`
    mciSendString(rawloc.c_str(), NULL, 0, 0); 
    mciSendString(((std::string)"play "+Music[IndexMusic]).c_str(), NULL, 0, 0);
    return 0;
    }
MusicLoc 包含

路径,音乐包含文件名,因此 MusicLoc[1]+Music[1] 将是 C:\etc\etc\etc\audio.mp3 ,起初它工作正常,但后来它随机停止工作,我已经尝试了一切,但它不起作用,所以我猜不推荐使用 mciSendString,所以有人知道一个好的轻量级音频库吗?

编辑:第一个 mciSendString 返回 266,第二个返回 275,如果它有任何用处,但我真的没有找到关于它们的好文档。

GetLastError也说没有错误...

如果没有错误,则从 mciSendString 返回的值应为零。 您的问题表明您遇到了错误!

要很好地解码错误,请使用 mciGetErrorString

像这样的东西(从我的代码中撕下来,所以你将不得不调整变量名称等)

    wchar_t cmd[250];
    swprintf(cmd,249,L"open %s alias an1",fname1.c_str());
    err = mciSendString(cmd, 0, 0, 0 );
    if( err ) throw err;
...
catch ( unsigned int& err ) {
    wprintf(L"Playing %s %s %sn",fname1.c_str(),fname2.c_str(),fname3.c_str());
    wchar_t msg[128];
    mciGetErrorString( err, msg,128 );
    wprintf(L"%sn",msg);