[MFC]设置文件夹目录时遇到的问题
生活随笔
收集整理的這篇文章主要介紹了
[MFC]设置文件夹目录时遇到的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
關鍵字:SHBrowseForFolder、SHGetPathFromIDList
?
問題很菜,在網上找了一段想當然的代碼改吧改吧,結果報錯了,甚至都不知道錯哪里,調試也沒法跟蹤。
?
?
正文
一、問題代碼
????CString?szPath;????BROWSEINFO?bi;???
????bi.hwndOwner?=?m_hWnd;
????bi.pidlRoot?=?NULL;???
????bi.pszDisplayName?=?szPath.GetBuffer();???
????bi.lpszTitle?=L"請選擇目錄:";???
????bi.ulFlags?=?BIF_RETURNFSANCESTORS?|?BIF_RETURNONLYFSDIRS;?
????bi.lpfn?=?NULL;???
????bi.lParam?=?0;???
????bi.iImage?=?0;???
????//彈出選擇目錄對話框
????LPITEMIDLIST?lp?=?SHBrowseForFolder(&bi);???
????if(lp?&&?SHGetPathFromIDList(lp,?szPath.GetBuffer()))???
????????AfxMessageBox(szPath);
????else???
????????AfxMessageBox(L"無效的目錄,請重新選擇");
?
二、報錯截圖
?
?
三、解決錯誤
????TCHAR?szPath[MAX_PATH];????BROWSEINFO?bi;???
????bi.hwndOwner?=?m_hWnd;
????bi.pidlRoot?=?NULL;???
????bi.pszDisplayName?=?szPath;???
????bi.lpszTitle?=L"請選擇目錄:";???
????bi.ulFlags?=?BIF_RETURNFSANCESTORS?|?BIF_RETURNONLYFSDIRS;?
????bi.lpfn?=?NULL;???
????bi.lParam?=?0;???
????bi.iImage?=?0;???
????//彈出選擇目錄對話框
????LPITEMIDLIST?lp?=?SHBrowseForFolder(&bi);???
????if(lp?&&?SHGetPathFromIDList(lp,?szPath))???
????????AfxMessageBox(CString(szPath));
????else???
????????AfxMessageBox(L"無效的目錄,請重新選擇");
說明:把CString改成了TCHAR數組。
?
結束語
?
折騰很久,搜了老半天,最后把修改前的代碼和修改后的代碼比較了一下,才猜想出來。
?
?
總結
以上是生活随笔為你收集整理的[MFC]设置文件夹目录时遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。