MCIWindow 与长文件路径
MCIWindow with long file path
>我在项目中遇到了一个场景,我正在创建一个 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] startn";
if ( MCIWndPlay( m_window ) != 0 )
{
logStream().E() << "VideoMedia::play " << "n";
}
logStream().I() << "[VideoMedia::play] endn";
return true;
}
在我使用长度为 <128 的shortPath
创建m_window
的情况下,在媒体显示和播放的情况下,一切都很好。但是,对于长度> 128 的shortPath
,不会播放任何媒体。 有趣的是,在上面的VideoMedia::play()
函数中,日志指示MCIWndPlay()
调用执行正常,因为看不到 if 内部的错误日志。
我想知道这是否只是 MCIWnd 无法支持长文件路径的情况,尽管我在文档中没有看到任何表明是这种情况?
通过查看此处的文档,它说:
NOTE: MCI device has a path-length limit of 128 characters! If your media files are buried inside the nested subfolders and the path is longer than 128 characters, your media won't play.
因此,唯一真正的解决方案是确保路径不会大于它出现的 128 个字符限制。
相关文章:
- 如何将更多文件夹添加到c++include路径
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- C++17 文件系统::remove_all 带有通配符路径
- 从 C 中的变量获取文件的路径,C++
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 修改生成文件以简化框架 #include 路径
- 将Visual Studio Code路径设置为.clang_format文件
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 获取 H5::D ataSet 的hid_t和文件中的路径以使用 H5OCopy
- 在特定 Unicode 路径中创建文件
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++ 路径文件存在限制为 260 个字符
- QT-在pro中指定DLL路径.文件
- 路径文件存在导致链接器错误 2028/2019
- 选择QTableWidgetItem qt的路径文件
- 如何有一个正确的路径文件读取它到stringstream