使用CFileDialog 打开多个文件,获取文件路径。一般的使用情况为同一个文件夹目录下的某些文件,除文件名不一致外,前面路径均一样,使用GetStartPosition(),GetNextPathName()无问题;

但是对于打开文件夹目录,采用搜索的方式,显示出若干文件,且不在同一目录下,再采用上述方式,就出现了问题,不能准确获取前缀的文件夹目录地址,仅仅使用了第一个文件的绝对地址来覆盖后续的多选文件

查了好多资料,均给的第一种方式,但是并不能解决我所出现的问题,最后终于找到了一篇解决问题的帖子,现将代码等展示如下

参考地址:http://bbs.csdn.net/topics/391926645

两种方式代码如下:

方式1:

 CString strFilter = _T("所有支持的视频文件|*.ts;*.mp4;*.flv|MPEG-2 视频文件|*.ts|MPEG-4 视频文件|*.mp4|Adobe Flash Video|*.flv|其他文件类型|*.*||");CFileDialog dlg(TRUE, _T(""), _T(""), OFN_ALLOWMULTISELECT |OFN_ENABLESIZING|OFN_HIDEREADONLY, strFilter);// Create buffer for file names.const DWORD numberOfFileNames = 100;const DWORD fileNameMaxLength = MAX_PATH + 1;const DWORD bufferSize = (numberOfFileNames * fileNameMaxLength) + 1;TCHAR* filenamesBuffer = new TCHAR[bufferSize];// Initialize beginning and end of buffer.filenamesBuffer[0] = NULL;filenamesBuffer[bufferSize-1] = NULL;memset(filenamesBuffer,0,sizeof(TCHAR)*bufferSize);// Attach buffer to OPENFILENAME member.dlg.m_ofn.lpstrFile = filenamesBuffer;dlg.m_ofn.nMaxFile = bufferSize;// Create array for file names.CString fileNameArray[numberOfFileNames];if(dlg.DoModal() == IDOK){// Retrieve file name(s).POSITION fileNamesPosition = dlg.GetStartPosition();int iCtr = 0;while(fileNamesPosition != NULL && iCtr < numberOfFileNames){                        fileNameArray[iCtr] = dlg.GetNextPathName(fileNamesPosition);//其中fileNameArray[iCtr] 中为路径地址iCtr++;}  }

上述方式一不能满足搜索不同目录下同时打开多个文件的需求

方式二,此方式解决不同目录下同时打开多个文件获取文件路径的需求

        CString strFilter = _T("所有支持的视频文件|*.ts;*.mp4;*.flv|MPEG-2 视频文件|*.ts|MPEG-4 视频文件|*.mp4|Adobe Flash Video|*.flv|其他文件类型|*.*||");CFileDialog OpenDialog(TRUE, _T(""), _T(""),OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_HIDEREADONLY,strFilter);if (OpenDialog.DoModal() == IDOK){CString path;IShellItemArray *pResult=OpenDialog.GetResults();DWORD dwCount=0;IShellItem *pItem;WCHAR *pFilePath;pResult->GetCount(&dwCount);for (DWORD i=0;i<dwCount;i++){pResult->GetItemAt(i,&pItem);pItem->GetDisplayName(SIGDN_FILESYSPATH,&pFilePath);//其中pFilePath为目标文件的绝对路径}}

————————————————
版权声明:本文为CSDN博主「雾雨峰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/safeili/article/details/78720673

CFileDialog 打开多个目录下的多个文件相关推荐

  1. python打开指定文件-python打包压缩、读取指定目录下的指定类型文件

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...

  2. Python目录下中没有Script文件夹

    其中需要将C:\python27\Scripts 和 C:\python27 添加到系统路径中. 计算机属性-远程设置-高级(环境变量)-系统变量PATH后面添加Scrips的路径 而我的Python ...

  3. Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,

    Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,和SVN没有关 ...

  4. java 使用不同目录下的类_如何运行在不同目录下的java类文件? - Break易站

    Java 基础语法 在本文中,我们将学习如何使用其他项目的实用程序,类和成员.在继续之前,让我们了解一些关键字. 类路径 类路径是jvm开始执行程序的位置.与传统的动态加载行为类似,当执行Java程序 ...

  5. C++删除目录,包括该目录下所有子目录和文件

    目录 一.FindFirstFile 1.函数功能: 2.函数原型: 3.参数: 4.返回值: 5.注意: 二.FindNextFile 1.函数功能: 2.函数原型: 3.参数: 4.返回值: 5. ...

  6. python找不到scripts文件夹_Python目录下中没有Script文件夹

    其中需要将C:\python27\Scripts 和 C:\python27 添加到系统路径中. 计算机属性-远程设置-高级(环境变量)-系统变量PATH后面添加Scrips的路径 而我的Python ...

  7. Python:打印目录下最大的十个文件

    打印指定目录下最大的十个文件,并按倒序输出: vim top10.py #!/usr/bin/env python import os import sys import operator def g ...

  8. Maven出现User setting file does not exist ...\.m2\setting.xml的问题解决(同时也解决用户.m2目录下无setting.xml文件)

    Maven出现User setting file does not exist ...\.m2\setting.xml的问题解决(同时也解决用户.m2目录下无setting.xml文件) 参考文章: ...

  9. 批量移动某目录下某类型的文件到指定的目录下

    问题描述:由于目录下存在多个文件"***.so"且散布在不同的层级目录下,一个个去删除或者移动非常费力不讨好.于是想到有没有技巧可以批量移动,就想到了xargs参数,命令如下,且实 ...

最新文章

  1. SQL查询不重复数据
  2. String中的“equal方法”和“==”
  3. code标签无法渲染html,【菜鸟笔记】记一次django无法正常在ie和edge浏览器渲染html页面-站长资讯中心...
  4. 基坑监测日报模板_基坑监测有多重要?实录基坑坍塌过程,不亲身经历,不知道现场有多恐怖!...
  5. svn服务器地址更改
  6. ffmpeg 编码如何做带宽控制输出
  7. php中 判断表中是否有重复,PHP:最常见的表中回显重复项的数量
  8. 做地推怎么跟人打招呼
  9. MySQL性能半同步复制VS异步复制
  10. 计算机用户注册表修改,如何通过注册表修改桌面计算机/用户文档图标
  11. Docker安装Redis并介绍漂亮的可视化客户端进行操作
  12. 阿里技术专家十五问,真题面试刀刀见肉,走进面试间(答案解析)
  13. Mathmatica的学习打卡day 16
  14. python手机号替换_转--Python re模块 验证11位手机号
  15. Elasticsearch安装操作步骤
  16. 安全知识云服务器ip端口网络 socket 编程 端口 大全
  17. 域名备案(腾讯云买的域名,在阿里云上进行备案)
  18. Vue 开发环境搭建(Mac 版)
  19. COM, COM+ 和 .NET 的区别
  20. vivo X21 安装 Apk 失败问题

热门文章

  1. html中css路径和xpath路径,6.1 HTML的简单介绍和快速获取XPath和CSS路径
  2. roobo机器人怎么唱歌_智能机器人都长什么样?提前探秘中国智能机器人大赛
  3. Py之chatterbot-corpus:python包之chatterbot-corpus包简介、安装、使用方法之详细攻略
  4. ML:分类预测问题中评价指标(ER/混淆矩阵P-R-F1/ROC-AUC/RP/mAP)简介、使用方法、代码实现、案例应用之详细攻略
  5. 成功解决importError cannot import idnadata
  6. CV之IR:计算机视觉之图像检索(Image Retrieval)方向的简介、使用方法、案例应用之详细攻略
  7. python接口自动化根据请求接口类型进行封装
  8. XGBoost的理解
  9. 如何一键部署项目代码自动更新
  10. 内网能PING通TELNET通不能访问解决