/*-------------------------------------------------------------------------------/
関数名:void FindAllFile(LPCTSTR pstrName, CListBox &listbox, BOOL bFolder)
引 数:pstrName 検索するファイルの名前が入っている文字列へのポインタ。
listbox ファイル名を格納するCListBoxの参照。
bFolder TRUEにするとフォルダ名もリストに登録。
解 説:ディレクトリ内のファイルを全て検索しリストボックスに登録。
/-------------------------------------------------------------------------------*/
void FindAllFile(LPCTSTR pstrName, CListBox &listbox, BOOL bFolder)
{
CFileFind fnd;
if(fnd.FindFile(pstrName, 0))
{
int i = 1;
while(i)
{
i = fnd.FindNextFile();
// 処理が長くなった時の為の対策。
MSG msg;
if(::PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
// ファイル名が"."か".."の場合。
if(fnd.IsDots())
continue;
// フォルダだった場合。
if(fnd.IsDirectory())
{
CString strFindFile = pstrName;
strFindFile.Insert(strFindFile.ReverseFind('\\') + 1,
fnd.GetFileName() + _T("\\"));
// 再帰呼び出し。
FindAllFile(strFindFile, listbox, bFolder);
if(!bFolder)
continue;
}
// ファイル名の取得・設定
CString strFilePath = pstrName;
strFilePath = strFilePath.Left(strFilePath.ReverseFind('\\') + 1);
listbox.AddString(strFilePath + fnd.GetFileName());
}
fnd.Close();
}
}
|