为了账号安全,请及时绑定邮箱和手机立即绑定

想法如下,但是由于知识有限,出现了很多问题 :

想法如下,但是由于知识有限,出现了很多问题 :

C
喵喵时光机 2023-03-02 17:13:42
我的想法是用CFileFind搜索指定目录下的文件,判断如果是图像文件,就读取,最后在Ondraw里显示出来 。【例如,我现在对一个按钮做响应函数处理,这个按钮是完成下一张的功能,那么我就想当我点下这个按钮时,塔能调用函数获得下一张图片的句柄,然后交给ondraw函数来显示出来】 不清楚该怎样搜索,Findfile函数看了部太明白。 该怎样处理各种不同格式图片的读取,GDI+中有读取函数吗, 总之希望高手讲解一下思路和具体的实现步骤,能用具体的代码说话就更好了,谢谢各位了, 关于用Findfile,来连续查看图片的过程望详细讲解一下,谢谢~ 谢谢!!高手帮我用详细代码解释清楚啊,再送300分,谢谢~~~ FindFirstFile()和FindNextFile()写一个读取图片并显示出来的代码,例如我的图片放在"D:\Pic\"中,当我在查看图片是,点击下一张,则调用函数,读取下一个文件,若为图片,则显示,若不是图片,则继续读取下一张,直到遇到图片则显示出来。谢谢。
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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();


查看完整回答
反对 回复 2023-03-06
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

你可以先用CFileDialog对象弹出选择对话框 来让用户选择要显示的第一个文件。
然后用CFileFind来查找下一个文件,如果有,判断格式,如果是图片再显示。不是就cancle

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信