MFC中怎么实现连续显示一个文件夹里的图片
答案:3 悬赏:60 手机版
解决时间 2021-03-25 08:32
- 提问者网友:山高云阔
- 2021-03-24 22:15
MFC中怎么实现连续显示一个文件夹里的图片
最佳答案
- 五星知识达人网友:撞了怀
- 2021-03-24 22:30
是否需要源程序,我这里有,以前做过,现在有点理不出头绪了。你说的这个难点有两个:
1.在MFC中显示图片,这是一种模块功能,你可以单独来写。
2.遍历指定文件夹,找到指定文件。这个难度可能要比第一条大,因为第一条有许多源代码可以参考,而这条你可以参见一下Windows资源管理器的相关编程,它就涉及到同一文件夹下,所有文件的显示和处理方式。
总的来说:自己从头编不是小工程,不过现在也没有人从头编,站在巨人的肩膀上才能走的远。所以我建议你参考其他人的源程序,进行修改移植,这样你既可以完成工程量也可以达到效果,不过一定要有一些调试程序的经验和基础。
注:如需源程序,留邮箱或站内联系
源码已经发送至你邮箱,是我原来一个工程的一部分,没有分离完全,不过VC++6.0调试通过,好好看看吧,就是你要的功能。
1.在MFC中显示图片,这是一种模块功能,你可以单独来写。
2.遍历指定文件夹,找到指定文件。这个难度可能要比第一条大,因为第一条有许多源代码可以参考,而这条你可以参见一下Windows资源管理器的相关编程,它就涉及到同一文件夹下,所有文件的显示和处理方式。
总的来说:自己从头编不是小工程,不过现在也没有人从头编,站在巨人的肩膀上才能走的远。所以我建议你参考其他人的源程序,进行修改移植,这样你既可以完成工程量也可以达到效果,不过一定要有一些调试程序的经验和基础。
注:如需源程序,留邮箱或站内联系
源码已经发送至你邮箱,是我原来一个工程的一部分,没有分离完全,不过VC++6.0调试通过,好好看看吧,就是你要的功能。
全部回答
- 1楼网友:轻熟杀无赦
- 2021-03-25 00:08
你可以先用CFileDialog对象弹出选择对话框 来让用户选择要显示的第一个文件。
然后用CFileFind来查找下一个文件,如果有,判断格式,如果是图片再显示。不是就cancle
然后用CFileFind来查找下一个文件,如果有,判断格式,如果是图片再显示。不是就cancle
- 2楼网友:老鼠爱大米
- 2021-03-24 23:28
1.你可以先用CFileFind搜索指定目录下的文件,把所有图像文件的路径保存在一个CStringList中,然后在按钮响应函数中调用Invalidate,引起重画,在OnDraw中写显示图片的代码。
2.关于CFileFind遍历的应用,网上有很多代码。看不懂再联系我吧。
3.可以得到文件的格式,再由格式判断是否是图片。无论是什么格式,最终都只是以二进制来存储。所以操作图像文件和操作普通文件是一样的(只要你用二进制方式进行读写)。
4.图像文件搜索的代码在下面了(只能搜索一个文件夹里面的文件):
bool CReadImgDlg::FindImg(CString dir, //目录名
CStringList &list) //文件路径列表
{
CFileFind finder;
//开始查找文件
BOOL bWorking = finder.FindFile(dir + "\\*.*");
if(!bWorking)
return false;
while (bWorking)
{
bWorking = finder.FindNextFile();
//判断是否是目录或者是隐藏文件,又或者是".."和".",如果是,进入下一轮循环
if(finder.IsDirectory()|| finder.IsDots() || finder.IsHidden())
continue;
else//如果是文件
{
CString str;
//得到文件名
str = finder.GetFileName();
//得到文件后缀名
int nLen = str.GetLength() - finder.GetFileTitle().GetLength();
str = str.Right(nLen);
//判断文件格式,如果是图像文件,将其完整的路径保存在列表中
if(str == ".jpg" || str == ".png" || str == ".bmp" || str == ".gif")
list.AddTail(finder.GetFilePath());
}
}
return (bool)list.GetCount();
}
5.至于如何显示非位图的图像文件,可以用控件。这个我就不说了。麻烦了点。。
2.关于CFileFind遍历的应用,网上有很多代码。看不懂再联系我吧。
3.可以得到文件的格式,再由格式判断是否是图片。无论是什么格式,最终都只是以二进制来存储。所以操作图像文件和操作普通文件是一样的(只要你用二进制方式进行读写)。
4.图像文件搜索的代码在下面了(只能搜索一个文件夹里面的文件):
bool CReadImgDlg::FindImg(CString dir, //目录名
CStringList &list) //文件路径列表
{
CFileFind finder;
//开始查找文件
BOOL bWorking = finder.FindFile(dir + "\\*.*");
if(!bWorking)
return false;
while (bWorking)
{
bWorking = finder.FindNextFile();
//判断是否是目录或者是隐藏文件,又或者是".."和".",如果是,进入下一轮循环
if(finder.IsDirectory()|| finder.IsDots() || finder.IsHidden())
continue;
else//如果是文件
{
CString str;
//得到文件名
str = finder.GetFileName();
//得到文件后缀名
int nLen = str.GetLength() - finder.GetFileTitle().GetLength();
str = str.Right(nLen);
//判断文件格式,如果是图像文件,将其完整的路径保存在列表中
if(str == ".jpg" || str == ".png" || str == ".bmp" || str == ".gif")
list.AddTail(finder.GetFilePath());
}
}
return (bool)list.GetCount();
}
5.至于如何显示非位图的图像文件,可以用控件。这个我就不说了。麻烦了点。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯