c 選擇資料夾對話方塊

2022-07-17 19:06:11 字數 2456 閱讀 8784

提供乙個對話方塊供使用者選擇乙個資料夾路徑。

先貼上這個工具類的原始碼:

在你的程式中使用靜態方法 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...