Visual c++ MCI加载视频文件

Visual c++ MCI加载视频文件,visual-c++,media-player,mci,Visual C++,Media Player,Mci,我试图加载,然后在我的Visual C++应用程序中播放MCI视频文件,但是McSISTrSTRIN()方法会失败并返回一个错误代码。错误代码是259,意思是“MCIERR\u未识别的\u关键字”。命令和格式对我来说很好,当我调试它时,文件名会正确地放在命令字符串中。我不确定这是什么原因造成的 bool Player::Load(String^ fileName) { DWORD dwReturn = 0; CString myStr(fileName); CString strCommand;

我试图加载,然后在我的Visual C++应用程序中播放MCI视频文件,但是McSISTrSTRIN()方法会失败并返回一个错误代码。错误代码是259,意思是“MCIERR\u未识别的\u关键字”。命令和格式对我来说很好,当我调试它时,文件名会正确地放在命令字符串中。我不确定这是什么原因造成的

bool Player::Load(String^ fileName)
{
DWORD dwReturn = 0;
CString myStr(fileName);
CString strCommand;
strCommand.Format(L"Open %s type avivideo alias AVIFile", myStr);

dwReturn = mciSendString(strCommand, NULL, 0, NULL);

if (dwReturn)
    return false; // An error has occurred while trying to open the video file

return true;

}

为什么您使用MCI而不是DirectShow或MediaFoundation?不幸的是,这是分配要求。我们正在学习directshow next..在调用
CString::Format
后,您是否可以转储
strCommand
的值?调试时打开C:\Users\JC\Videos\Test.AVI类型avivideo别名AVIFile,但打印时它似乎是“o”,我认为问题在于您使用的是宽字符串,而
mciSendString
需要可定义为1字节字符串的
LPCTSTR
。尝试从您的
打开的%s ty…
字符串中删除
L
前缀,看看是否有效。