我的疑问  我用注释的形式吧,代码是正确的,我COPY来的,只是有几点不太明白,希望能得到指点,刚接触MFC。BOOL IsRoot(LPCTSTR lpszPath) // LPCSTR 是常量字符类型么?不太明白这个BOOL函数的作用。

    TCHAR szRoot[4]; 
    wsprintf(szRoot, "%c:\\", lpszPath[0]); // 
    return (lstrcmp(szRoot, lpszPath) == 0); //  这两句都不太明白。
} void FindInAll(LPCTSTR lpszPath) 

    TCHAR szFind[MAX_PATH]; 
    lstrcpy(szFind, lpszPath); 
    if(!IsRoot(szFind)) 
        lstrcat(szFind, "\\"); 
    lstrcat(szFind, FILEILTER); // 找所有文件 ( 怎么实现的?)
    WIN32_FIND_DATA wfd;  // 这是什么类型
    HANDLE hFind = FindFirstFile(szFind, &wfd); 
    if(hFind == INVALID_HANDLE_VALUE) // INVALID_HANDLE_VALUE ??? 
        return; 
  // do while 循环大体能理解 不过不透彻。
    do 
    { 
        if(wfd.cFileName[0] == '.') 
            continue; // 过滤这两个目录 
        if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
        { 
            TCHAR szFile[MAX_PATH]; 
            if(IsRoot(lpszPath)) 
                wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 
            else 
            { 
                wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); 
                FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 
            } 
        } 
        else 
        { 
            TCHAR szFile[MAX_PATH]; 
            if(IsRoot(lpszPath)) 
            { 
                wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 
            } 
            else 
            { 
                wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); 
                printf("%s\n", szFile); 
            } 
            // 对文件进行操作 
        } 
    } 
    while(FindNextFile(hFind, &wfd)); 
    FindClose(hFind); // 关闭查找句柄 } 
int main(int argc, char* argv[]) 

FindInAll("D:\\date"); 
    return 0;