0
すべてのファイルとフォルダ(サブフォルダを含む)をリストボックスに表示して、それらを表示する再帰関数を作成すると思います。しかし、コードは、選択するフォルダ内のすべてのファイルとフォルダを表示するとうまく機能しますが、サブフォルダでスキャンすることはできません(最初のフォルダのみを表示します)。エラーとは何ですか?MFCエラーで再帰的にすべてのファイルを一覧表示しますか?
これは私の機能(私は私のダイアログクラスにそれを追加します)
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"\\*.*");
}
}
}
され、その後、ここでは、コード
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());
}
}
デバッガを使用することをお勧めします。 –
関数呼び出しと関数本体の両方で '*。* 'を追加する必要はありません。 –
ありがとう、ニールバターワース、私はあなたのコメントでそれを解決します。 – HuynhAT