我在我的项目中遇到了一个场景,我正在创建一个 MCI 窗口以播放一些视频,其中当传递给它的文件路径长度超过 128 个字符时,它无法正确播放。
我正在创建一个新的 MCIWindow,如下所示:
m_window = MCIWndCreate( _owner, GetModuleHandle(NULL), WS_CHILD|MCIWNDF_NOERRORDLG|MCIWNDF_NOPLAYBAR|MCIWNDF_NOMENU, shortPath.c_str() );
稍后将通过执行以下操作来播放它:
bool VideoMedia::play()
{
logStream().I() << "[VideoMedia::play] start\n";
if ( MCIWndPlay( m_window ) != 0 )
{
logStream().E() << "VideoMedia::play " << "\n";
}
logStream().I() << "[VideoMedia::play] end\n";
return true;
}
在我创建m_window
使用shortPath
长度 < 128 的情况下,媒体显示和播放一切正常。但是,如果 ashortPath
长度 > 128,则不会播放任何媒体。有趣的是,在上面的VideoMedia::play()
函数中,日志表明MCIWndPlay()
调用执行良好,因为没有看到 if 内部的错误日志。
我想知道这是否只是 MCIWnd 不能支持长文件路径的情况,尽管我在文档中没有看到任何建议是这种情况?