MFC開啟資料夾對話方塊初始化開啟路徑
阿新 • • 發佈:2019-02-07
使用MFC開發程式時,有時需要選擇資料夾,可使用SHBrowseForFolder解決,但此方法並不支援初始化選擇路徑。
開啟資料夾對話方塊,程式碼如下:
BROWSEINFO bi; TCHAR Buffer[MAX_PATH]; bi.hwndOwner = NULL; bi.pidlRoot =NULL; bi.pszDisplayName = Buffer; bi.lpszTitle = _T("選擇資料夾:"); bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS; //開啟選擇資料夾對話方塊 LPITEMIDLIST pIDList = SHBrowseForFolder(&bi); if(pIDList) { //獲取資料夾路徑 SHGetPathFromIDList(pIDList, Buffer); }
上述程式碼可以開啟一個對話方塊選擇視窗,但並不能設定初始化路徑。
設定初始化路徑可以設定一個回撥函式,在初始化完成之後設定選定的路徑。
bi.lParam = (LPARAM)(TCHAR*)temppath;
bi.lpfn = OpenFolderProc;
回撥函式定義如下:
此時,便可以設定初始檔案夾了。//開啟資料夾對話方塊的回撥函式 int CALLBACK OpenFolderProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData) { if(uMsg == BFFM_INITIALIZED) { //輸出選擇的資料夾 SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); } return 0; }
為了進一步方便使用,還可以封裝成一個類。
我這裡不再貼出程式碼,需要的請自行下載。