MFC中文件路径问题。急。。。。

Cesar-Wu 2013-07-29 05:29:57
我在MFC上用PIC控件搭建好了一个视频播放框架,能实现视频的播放和暂停和停止功能。但视频的路径是直接在程序中写入的,只有进去编程窗口才可以修改播放不同的视频。
我想附加一个认为选择视频的功能,通过建立一个文件对话框,来选择要播放的视频,不过失败了。查找了原因,只要是报错在视频文件的路径上。
我所指定的路径为这个格式D:\JJ\FD.avi
而貌似程序中路径的满足要求格式好像是这个 D:\\JJ\\ED.avi

我不知道这个是不是搞不定的原因,麻烦懂的支下招。
...全文
234 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-07-31
  • 打赏
  • 举报
回复
引用 10 楼 xiaoxiaomao410 的回复:
[quote=引用 7 楼 xianglitian 的回复:] 你怎么查找的文件 CFileDialog即可啊
我讲路径现实在了编辑框上,路径正确。只是我在引用路径时处理不好。现在在改进中。[/quote]获取到路径直接用就可以了啊
Cesar-Wu 2013-07-31
  • 打赏
  • 举报
回复
引用 7 楼 xianglitian 的回复:
你怎么查找的文件 CFileDialog即可啊
我讲路径现实在了编辑框上,路径正确。只是我在引用路径时处理不好。现在在改进中。
Cesar-Wu 2013-07-31
  • 打赏
  • 举报
回复
引用 2 楼 yaozhiyong110 的回复:
用cfiledialog就能取到文件全路径了啊 还有程序的路径难道是要求"C:\\\\aaa\\\\b.avi" 这样的? 不可能 吧 所以应该还是你取的路径有问题...
问题想通了。哈哈。我犯了个小错误。。还好有你们的提醒。谢谢了
woshisange03 2013-07-30
  • 打赏
  • 举报
回复
把你的buf路径打印出来看看,我有点怀疑是不是你的字符集问题,导致了你传的路径参数只传进去了第一个字符。
向立天 2013-07-30
  • 打赏
  • 举报
回复
你怎么查找的文件 CFileDialog即可啊
Cesar-Wu 2013-07-30
  • 打赏
  • 举报
回复
引用 5 楼 woshisange03 的回复:
考虑到你取到D:\xx\a.avi这样的路径是作为参数直接传出去的,应该没有转义符的问题啊,你又不是手动打出来的。是不是路径没取完整??用11版主的对话框方法把路径打出来看看 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"avi文件(*.avi)|*.avi||",AfxGetMainWnd()); dlg.DoModal(); filename = dlg.GetPathName(); 试试,是不是你路径没取完整啊?
这个是获取地址的 void CMFC_DEMODlg::OnBnClickedOpenFileButton() { // TODO: 在此添加控件通知处理程序代码 // 设置过滤器 TCHAR szFilter[] = _T("文本文件(*.avi)|*.avi|所有文件(*.*)|*.*||"); // 构造打开文件对话框 CFileDialog fileDlg(TRUE, _T("avi"), NULL, 0, szFilter, this); CString strFilePath; // 显示打开文件对话框 if (IDOK == fileDlg.DoModal()) { // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里 strFilePath = fileDlg.GetPathName(); } 我现在想将strFilePath的地址映射到这个程序上去, void CMFC_DEMODlg::OnBnClickedOpenImg() { CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC); HWND h=pStatic->GetSafeHwnd(); CString open1; char buf[256]; open1.Format("open strFilePath type MPEGVideo Alias movie parent %u Style %u notify", h,WS_CHILD); mciSendString(open1.GetBuffer(open1.GetLength()),buf,sizeof(buf),NULL); //播放多媒体文件 mciSendString("play movie ",buf,sizeof(buf),NULL); } 没报错,但不能出视频。 如果直接将strFilePath替换成路径又可以播放了。路径类型是这个的 f:\\mpeg\\mpeg.avi
woshisange03 2013-07-30
  • 打赏
  • 举报
回复
考虑到你取到D:\xx\a.avi这样的路径是作为参数直接传出去的,应该没有转义符的问题啊,你又不是手动打出来的。是不是路径没取完整??用11版主的对话框方法把路径打出来看看 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"avi文件(*.avi)|*.avi||",AfxGetMainWnd()); dlg.DoModal(); filename = dlg.GetPathName(); 试试,是不是你路径没取完整啊?
vicagogo 2013-07-29
  • 打赏
  • 举报
回复
莫非,你用个string?,双斜杠为一个斜杠,转义字符啊
Eleven 2013-07-29
  • 打赏
  • 举报
回复
转移字符~~~你用MessageBox输出两种出来看看不就清楚了
yaozhiyong110 2013-07-29
  • 打赏
  • 举报
回复
用cfiledialog就能取到文件全路径了啊 还有程序的路径难道是要求"C:\\\\aaa\\\\b.avi" 这样的? 不可能 吧 所以应该还是你取的路径有问题...
MsgTo 2013-07-29
  • 打赏
  • 举报
回复
那在你选择路径的字符串 中有/杠的地方都加一个字符/不行么?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧