【MFC】选择文件夹时,记忆上一次路径
生活随笔
收集整理的這篇文章主要介紹了
【MFC】选择文件夹时,记忆上一次路径
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
參考
https://www..com/Hisin/archive/2012/02/27/2370614.html
https://www..com/ranjiewen/p/5697219.html
代碼
CString s_save_path;//存放選擇的目錄 CMutex g_mtx;//選擇文件夾對(duì)話框回調(diào)函數(shù) int CALLBACK BrowseCallBackFun(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) {switch (uMsg){case BFFM_INITIALIZED: //選擇文件夾對(duì)話框初始化 //設(shè)置默認(rèn)路徑為lpData即'D:\' ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);//在STATUSTEXT區(qū)域顯示當(dāng)前路徑 ::SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, lpData);//設(shè)置選擇文件夾對(duì)話框的標(biāo)題 ::SetWindowText(hwnd, TEXT("請(qǐng)先設(shè)置個(gè)工作目錄"));break;case BFFM_SELCHANGED: //選擇文件夾變更時(shí) {TCHAR pszPath[MAX_PATH];//獲取當(dāng)前選擇路徑 SHGetPathFromIDList((LPCITEMIDLIST)lParam, pszPath);//在STATUSTEXT區(qū)域顯示當(dāng)前路徑 ::SendMessage(hwnd, BFFM_SETSTATUSTEXT, TRUE, (LPARAM)pszPath);}break;}return 0; }void OnSelectPath(){g_mtx.Lock();char szPath[MAX_PATH]; //存放選擇的目錄路徑 //CString str;char* tmp = s_save_path.GetBuffer();//獲取上一次路徑,CString->char*ZeroMemory(szPath, sizeof(szPath));BROWSEINFO bi;bi.hwndOwner = this->GetSafeHwnd();bi.pidlRoot = NULL;bi.pszDisplayName = szPath;bi.lpszTitle = "請(qǐng)選擇需要打包的目錄:";bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_STATUSTEXT;bi.lpfn = BrowseCallBackFun;//回調(diào)函數(shù)bi.lParam = (LPARAM)TEXT(tmp);//上一次路徑bi.iImage = 0;//彈出選擇目錄對(duì)話框LPITEMIDLIST lp = SHBrowseForFolder(&bi);if (lp && SHGetPathFromIDList(lp, szPath)){//str.Format("選擇的目錄為 %s", szPath);s_save_path.Format("%s", szPath);//獲得新路徑//AfxMessageBox(str);}elseAfxMessageBox("無(wú)效的目錄,請(qǐng)重新選擇");g_mtx.Unlock(); }總結(jié)
以上是生活随笔為你收集整理的【MFC】选择文件夹时,记忆上一次路径的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vs 正则表达式替换
- 下一篇: X86汇编——字符串逆序输出