文件查找问题解惑?

来源:百度知道 编辑:UC知道 时间:2024/05/18 22:02:57
void CLlView::Add(LPCTSTR str)//str为传递过来的当前目录。
{
int count=0;
CString str1=str;
if(str1.Right(1)!="\\")
str1=str1+"\\";
str1+=_T("*.*");
HANDLE handle;
WIN32_FIND_DATA fd;
if((handle=::FindFirstFile(str1,&fd))!=INVALID_HANDLE_VALUE)//查找第一个文件成功的话执行下面的
{
if(!(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))//如果不是目录就执行MessageBox("546dtg"),可为什么不会执行呢?
{
MessageBox("546dtg");//为什么这个不会执行??
InsertItem1(count++,fd);
}
while(::FindNextFile(handle,&fd))
{
if(!(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
InsertItem1(count++,fd);
break;
}
}
::FindClose(handle);
}

你的流程有问题:
先查找第一个文件,然后判断是不是目录,第一个文件肯定是目录,即使没有目录都是文件的话,也有".."这个目录,所以,肯定不会进入MessageBox("546dtg");

然后在Find下个文件,判断是不是目录,不是则执行InsertItem1(count++,fd); ,然后不管是不是都break,函数退出了,所以肯定进入不了MessageBox。