2 回答
TA贡献1796条经验 获得超10个赞
CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");//1
while (bWorking)
{
bWorking = finder.FindNextFile();//2
int i = m_listShowPicture.GetItemCount();//3
m_listShowPicture.InsertItem(i,"");
m_listShowPicture.SetItemText(i,0,finder.GetFileName());
}
上面程序完成文件遍历。
finder.FindNextFile();使用n次,找到的文件就是第n个。
即如果想使用CFileFind的成员函数,必须先初始化一次。
第一次用FindNextFile();找到是第一个文件,不是第二个。
总是这样一个过程:1:Find 2:Next 3:调用
由路径找到文件信息
void CMPEG2EncodeDlg::AddFileLink(CString filepath)
{
SHFILEINFO fileinfo;//文件信息结构,用来获取文件的图标
CFileFind filefd;//文件查找类
BOOL bContinue = filefd.FindFile(filepath); //1
if(bContinue)
{
filefd.FindNextFile();//2
SHGetFileInfo( filefd.GetFilePath(),
0,
&fileinfo,sizeof(fileinfo),
SHGFI_ICON);
int i = m_imagelist.Add(fileinfo.hIcon);//取得文件图标
m_listShowPicture.InsertItem(0,"",i);
m_listShowPicture.SetItemText(0,0,filefd.GetFileName());//3
m_listShowPicture.SetItemText(0,1,filefd.GetFilePath());
}
}
TA贡献1852条经验 获得超1个赞
FindNextFile的返回值比较麻烦,他是刚刚好遍历到最后一个文件的时候,给你返回false,也就意味着最后一个文件还没处理就退出while了。
所以得写成这样:
BOOL bRes = ff.FindFile(.....);
while(bRes)
{
bRes = ff.FindNextFile();// 遍历到最后一个文件的时候,bRes变成false。下面先处理了这个文件,之后才退出循环。
if (!ff.IsDirectory())
{...}
}
- 2 回答
- 0 关注
- 203 浏览
添加回答
举报