我的密码

    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包含路径,而Music包含文件名,因此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 %s\n",fname1.c_str(),fname2.c_str(),fname3.c_str());
    wchar_t msg[128];
    mciGetErrorString( err, msg,128 );
    wprintf(L"%s\n",msg);

关于c++ - mciSendString随机停止工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12690169/

10-12 16:55