根据CFileDialog对话框打开的文件路径,获取下一个文件的路径

andyboliu 2011-03-23 09:49:18
使用CFileDialog dlg(...);str=dlg.GetPathName()或GetFileName()获得一个的路径("D:\\Image\\IMG_3.bmp")。Image文件夹里顺序放着(IMG_1.bmp,IMG_2.bmp,IMG_3.bmp,...IMG_n.bmp)n个这样的文件。
如何通过str依次的到IMG_4.bmp,IMG_5.bmp..的路径?(对话框打开的文件夹路径,文件路径都是要根据用户打开得到)。
我尝试用CFileFind类但好像只能从IMG_1.bmp开始循环,而且第二个是IMG_10.bmp而不是IMG_2.bmp...
...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
TandyT 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fishion 的回复:]
如果你已经确定里面的文件是IMG_1.bmp,IMG_2.bmp,IMG_3.bmp,...IMG_n.bmp这样的顺序的,那你就只打开第一个,后面的就自己IMG_1.bmp,后面的就自己用str.Format("IMG_%d.bmp",i)来进行组合..
或者不是的,那你就先一遍循环把所有文件名记录下来,提取里面的数字后再进行排序
[/Quote]

支持。

用默认的查找方法,不一定是按照你这个顺序来的,如果你确实要 学习xx1 、xx2 、xx3 、xx4、、、这样的顺序来处理的话,先遍历存储各个文件的完整路径,然后自己写个小程序排序,然后再从你这个排好序的列表里依次读取来处理。
King_hhuang 2011-03-23
  • 打赏
  • 举报
回复
循环遍历文件夹啊

CString pathWild = "你的路径" + _T("\\*.bmp");
struct _finddata_t c_file;
long hFile;
if( (hFile = _findfirst( LPCTSTR(pathWild), &c_file )) == -1L)
{
MessageBox("选择目录下并无bmp文件,请确认");
_findclose(hFile);
return;
}
else
{
do
{
//这里就是文件名,加上之前的路径就是完整路径了
CString strFileName = c_file.name;
//下面就是将strFileName打印出来即可

}
while (_findnext(hFile, &c_file) == 0);
}
_findclose(hFile);
fishion 2011-03-23
  • 打赏
  • 举报
回复
如果你已经确定里面的文件是IMG_1.bmp,IMG_2.bmp,IMG_3.bmp,...IMG_n.bmp这样的顺序的,那你就只打开第一个,后面的就自己IMG_1.bmp,后面的就自己用str.Format("IMG_%d.bmp",i)来进行组合..
或者不是的,那你就先一遍循环把所有文件名记录下来,提取里面的数字后再进行排序
fishion 2011-03-23
  • 打赏
  • 举报
回复
因为是按名字的符号先后顺序进行查找的
andyboliu 2011-03-23
  • 打赏
  • 举报
回复
我用 CString str;str.ReverseFind,str.Mid,str.left等API先得到路径中的图像ID,如IMG_2.bmp中的2,然后num++再赋值给原来的路径,现在可以实现了,感谢各位高手的建议,结贴给分了~~

16,472

社区成员

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

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

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