Ich möchte alle meine Dateien und Ordner (einschließlich Unterordner) auflisten und sie in meine Listbox anzeigen, so dass ich über eine rekursive Funktion schreibe, um sie anzuzeigen. Aber der Code funktioniert gut, wenn ich alle Dateien und Ordner im Auswahlordner zeige, aber nicht in Unterordnern (es zeigt nur den ersten Ordner und nicht mehr). Bitte helfen Sie mir zu wissen, was der Fehler ist?Listet alle Dateien rekursiv in MFC-Fehler auf?
Dies ist meine Funktion
void CFileListingDlg::ListFile(CString path)
{
CFileFind hFile;
BOOL bFound;
CString filePath;
bFound=hFile.FindFile(path+L"\\*.*");
while(bFound)
{
bFound=hFile.FindNextFile();
if(!hFile.IsDots())
{
m_lFiles.AddString(hFile.GetFilePath());
//It work well with selecting folder if I remove this line
//But it shows only first folder when I use it
if(hFile.IsDirectory()) ListFile(hFile.GetFilePath()+L"\\*.*");
}
}
}
Und dann, ich nenne es, wenn Klick Browser-Schaltfläche mit dem Code
void CFileListingDlg::OnBnClickedBtnBrowse()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
CFolderPickerDialog folderDialog(_T("E:\\Test"));
if(folderDialog.DoModal()==IDOK)
{
m_eFolder.SetWindowText(folderDialog.GetPathName());
m_lFiles.ResetContent();
ListFile(folderDialog.GetPathName());
}
}
Ich schlage vor, Sie lernen, einen Debugger zu verwenden. –
Ich glaube nicht, dass Sie das '*. *' Sowohl im Funktionsaufruf als auch im Funktionskörper anhängen sollten. –
Danke, Neil Butterworth, ich löse es mit deinem Kommentar. – HuynhAT