2 回答

TA貢獻1852條經驗 獲得超1個贊
下面代碼是自己改寫的,通過測試,好用:
void CTestDlg::OnSelectFolder()
{
UpdateData(TRUE);
char szDir[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = this->m_hWnd; // 指定父窗口,在對話框顯示期間,父窗口將被禁用
bi.pidlRoot = NULL; // 如果指定NULL,就以"桌面"為根
bi.pszDisplayName = szDir;
bi.lpszTitle = "請選擇目錄"; // 這一行將顯示在對話框的頂端
bi.ulFlags = BIF_STATUSTEXT|BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL) return;
if(!SHGetPathFromIDList(pidl, szDir)) return;
else m_strPath = szDir;
UpdateData(FALSE);
FindFiles(m_strPath);
}
//Visit the files of the folder selected.
void CTestDlg::FindFiles(CString filePath)
{
CString fileName="";
CString result="";
filePath+= _T("\\*.*");
CFileFind finder;
BOOL bFind=FALSE;
bFind=finder.FindFile(filePath);
while(bFind)
{
bFind=finder.FindNextFile();
if (finder.IsDots())
{
continue;
}
else
{
fileName=finder.GetFilePath();
result+=fileName+"\n";
}
}
finder.Close();
MessageBox(result,"結果顯示");
}

TA貢獻2039條經驗 獲得超8個贊
CString temppath="C:\\window"+CString("\\*.*");應該是這樣的
C:\window\. 和C:\window\..
這兩個是會出來的,你個代表上級目錄,一個子目錄
- 2 回答
- 0 關注
- 123 瀏覽
添加回答
舉報