代码void FindFireDelete(HWND hwnd,LPSTR lpstr)
{
TCHAR Select[256],Decision[256];//Select 是搜索的,Decision是找到的文件名+路径 
ZeroMemory(Select,sizeof(Select)/sizeof(TCHAR));
lstrcat(Select,lpstr);
lstrcat(Select,TEXT("*.*"));
WIN32_FIND_DATA wdate;
HANDLE hdl=FindFirstFile(Select,&wdate);
while(hdl)
{
ZeroMemory(Decision,sizeof(Decision)/sizeof(TCHAR));
wsprintf(Decision,TEXT("%s\\%s"),lpstr,wdate.cFileName);
if(FILE_ATTRIBUTE_DIRECTORY==GetFileAttributes(Decision))
{
MessageBox(hwnd,Decision,TEXT("是文件夹"),0);
//lstrcat(Decision,TEXT("\\"));   按理说这里要加的吧?但是加了就一直弹出。不加就怎么都找不到
FindFireDelete(hwnd,Decision);
}
BOOL a=FindNextFile(hdl,&wdate);
if(!a)
{
goto err;
}
}
err:
FindClose(hdl);
}然后我调用这样调的TCHAR buff[100]=TEXT("E:");
   FindFireDelete(hwnd,buff);第二级目录怎么也找不到,请大家帮忙看看错哪儿了

解决方案 »

  1.   

    似乎FindFirstFile找不出子目录的?
      

  2.   

    楼主可以参考我的代码
    void CMyDlg::EnumFile(CString path)
    {
    HANDLE   hFirstFile   =   NULL;   
    WIN32_FIND_DATA     FindData;  
    if(path[path.GetLength()-1]!='\\')
    {
    path+="\\";
    }
    hFirstFile   = FindFirstFile( path+"*.*",&FindData );   
    if(hFirstFile==INVALID_HANDLE_VALUE   )   
    return ;   
    while(TRUE)
    {  
    CString str;
    str=FindData.cFileName;
    if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
    if(FindData.cFileName[0]!='.')
    {
    EnumFile(path+FindData.cFileName);
    }
    }
    else
    {
    vfilepath.push_back(path+str);
    str.Delete(str.Find(".url"),4);
    vfile.push_back(str);
    }
    if(!FindNextFile(hFirstFile,&FindData))
    break;
    }
    }
      

  3.   

    基本一样啊,但是我用FindFirstFile(TEXT("E:\\11\\*.*"),&wdate);这种就得出乱七八糟的结果,不知道为什么
      

  4.   

    我曹,知道原因了,
    我在E:\目录下搜索文件夹没问题,但是在例如E:\11\下搜索会多出两个结果   .   和 ..
    比如E:\11下只有 12 这个文件夹  但是会搜索到 E:\11\.  E:\11\..  E:\11\12
    莫名其妙啊