提供乙個對話方塊供使用者選擇乙個資料夾路徑。
先貼上這個工具類的原始碼:
在你的程式中使用靜態方法 cselectfolderdlg::show() 就能顯示乙個選擇資料夾的對話方塊啦,返回的cstring就是所選資料夾路徑。
[cpp]view plain
copy
/* 檔案:selectfolderdlg.h
說明:提供乙個選擇資料夾的對話方塊
*/
#ifndef select_folder_dlg_h
#define select_folder_dlg_h
#ifndef bif_newdialogstyle
#define bif_newdialogstyle 0x0040
#endif
class cselectfolderdlg
; cstring strfolderpath = text("");
browseinfo sinfo;
::zeromemory(&sinfo, sizeof(browseinfo));
sinfo.pidlroot = 0;
sinfo.lpsztitle = _t("請選擇乙個資料夾:");
sinfo.ulflags = bif_dontgobelowdomain | bif_returnonlyfsdirs | bif_newdialogstyle | bif_editbox;
sinfo.lpfn = null;
// 顯示資料夾選擇對話方塊
lpitemidlist lpidlbrowse = ::shbrowseforfolder(&sinfo);
if (lpidlbrowse != null)
} if(lpidlbrowse != null)
return strfolderpath;
} };
#endif
簡單說明下,
有個api可顯示乙個瀏覽資料夾的對話方塊,形式為:
lpitemidlist winapi shbrowseforfolder( lpbrowseinfo lpbi);
引數就乙個,這個結構定義:
[cpp]view plain
copy
typedef struct _browseinfo browseinfo, *pbrowseinfo, *lpbrowseinfo
使用函式前我們建乙個這個結構,填一些內容,可以對要顯示的對話方塊做些配置:
[cpp]view plain
copy
browseinfo sinfo;
::zeromemory(&sinfo, sizeof(browseinfo));
sinfo.pidlroot = 0;
sinfo.lpsztitle = _t("請選擇乙個資料夾:");
sinfo.ulflags = bif_dontgobelowdomain | bif_returnonlyfsdirs | bif_newdialogstyle | bif_editbox;
sinfo.lpfn = null;
這裡設定了對話方塊顯示的目錄樹根目錄、標題、風格等。
現在就可以用它來顯示乙個「請選擇乙個資料夾」對話方塊了:
[cpp]view plain
copy
// 顯示資料夾選擇對話方塊
lpitemidlist lpidlbrowse = ::shbrowseforfolder(&sinfo);
返回的 lpitemidlist 是windows shell 用來唯一標識乙個物件的結構,這裡用它可以獲取我們的路徑值:
選擇資料夾對話方塊
選擇資料夾對話方塊 在乙個專案中用到了選擇資料夾對話方塊,為了方便特意寫了函式來顯示並返回使用者選擇的資料夾的路徑 其中具體引數的含義可以參考http tag.csdn.net tag browseinfo.xml 呼叫時只需要 if folderbrowsedialog struserselect...
資料夾選擇對話方塊
1.資料夾選擇對話方塊 parameters p fpath like rlgrap filename lower case obligatory at selection screen on value request for p fpath.data lw dir type rlgrap fil...
開啟資料夾選擇對話方塊
browseinfo bi char szpathname max path char sztitle 選擇路徑 zeromemory bi,sizeof browseinfo bi.hwndowner getsafehwnd bi.pszdisplayname szpathname bi.lpsz...