【MFC】选择文件夹时,记忆上一次路径
生活随笔
收集整理的這篇文章主要介紹了
【MFC】选择文件夹时,记忆上一次路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
參考
https://www..com/Hisin/archive/2012/02/27/2370614.html
https://www..com/ranjiewen/p/5697219.html
代碼
CString s_save_path;//存放選擇的目錄 CMutex g_mtx;//選擇文件夾對話框回調函數 int CALLBACK BrowseCallBackFun(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) {switch (uMsg){case BFFM_INITIALIZED: //選擇文件夾對話框初始化 //設置默認路徑為lpData即'D:\' ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);//在STATUSTEXT區域顯示當前路徑 ::SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, lpData);//設置選擇文件夾對話框的標題 ::SetWindowText(hwnd, TEXT("請先設置個工作目錄"));break;case BFFM_SELCHANGED: //選擇文件夾變更時 {TCHAR pszPath[MAX_PATH];//獲取當前選擇路徑 SHGetPathFromIDList((LPCITEMIDLIST)lParam, pszPath);//在STATUSTEXT區域顯示當前路徑 ::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 = "請選擇需要打包的目錄:";bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_STATUSTEXT;bi.lpfn = BrowseCallBackFun;//回調函數bi.lParam = (LPARAM)TEXT(tmp);//上一次路徑bi.iImage = 0;//彈出選擇目錄對話框LPITEMIDLIST lp = SHBrowseForFolder(&bi);if (lp && SHGetPathFromIDList(lp, szPath)){//str.Format("選擇的目錄為 %s", szPath);s_save_path.Format("%s", szPath);//獲得新路徑//AfxMessageBox(str);}elseAfxMessageBox("無效的目錄,請重新選擇");g_mtx.Unlock(); }總結
以上是生活随笔為你收集整理的【MFC】选择文件夹时,记忆上一次路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs 正则表达式替换
- 下一篇: MySQL 开发日志 -- 性能调优