天天看點

檔案夾選擇對話框的使用

檔案夾選擇對話框的使用

一. 示例代碼

CString iDir;

 BROWSEINFO bi;

 bi.hwndOwner = this->m_hWnd;

 bi.pidlRoot = NULL;

 bi.pszDisplayName = m_Dir.GetBuffer(512);

 bi.lpszTitle = _T("選擇儲存的檔案夾");

 bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_BROWSEFORCOMPUTER;

 bi.lpfn = NULL;

 bi.lParam = 0;

 bi.iImage = 0;

 ITEMIDLIST* pidl = ::SHBrowseForFolder(&bi);

 if (::SHGetPathFromIDList(pidl, m_Dir.GetBuffer(512)))

    m_Dir.ReleaseBuffer();

二. ROWSEINFO結構說明

hwndOwner:                          對話框的所有者

pidlRoot:                                從何根路徑開始展開檔案夾,預設情況下從“桌面”開始展開.

pszDisplayName:                指向一個緩存,該緩存傳回使用者選中的檔案夾的顯示名稱,

                                                緩存的大小設定為MAX_PATH

lpszTitle:                               對話框上的treeview控件上方顯示的标題, 并不是對話框的标題

ulFlags:                                顯示标志控制項.

                                               BIF_RETURNONLYFSDIRS, 隻有當使用者選中的是檔案夾時"确定"按鈕才有效

                                               BIF_BROWSEFORCOMPUTER, 隻有選中"我的電腦"時"确定"按鈕才有效

                                               BIF_EDITBOX, 在對話框上顯示一個Edit,允許使用者輸入選中項的名稱

                                               BIF_STATUSTEXT, 界面上包含一塊statu區域, 回調函數通過向對話框發送

                                                                 BFFM_SETSTATUSTEXT消息設定靜态文本

                                               BIF_VALIDATE, 當使用者在Edit中輸入不正确的名字時,向對話框發送

                                                                 BFFM_VALIDATEFAILED消息,并調用對話框的回調函數處理該消息

lpfn                                       設定處理對話框事件的回調函數

lParam                                對話框傳遞給回調函數的參數

iImage                                傳回與選中檔案夾關聯的圖檔的index , 該index是圖檔在系統ImageList中的index值.

三.  SHBrowseForFolder函數

view plaincopy to clipboardprint?

LPITEMIDLIST WINAPI SHBrowseForFolder(  

  LPBROWSEINFO lpbi  

); 

該函數顯示檔案夾選擇對話框, 并允許使用者選擇檔案夾.傳回值是指向一個ITEMIDLIST結構的指針, 該結構指定根目錄下使用者選中的檔案夾. 如果在對話框上使用者選擇的 "取消"按鈕, 則傳回NULL四.  SHGetPathFromIDList函數

四.  SHGetPathFromIDList函數

WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(

  LPCITEMIDLIST pidl,

  LPSTR pszPath

);

該函數将ITEMIDLIST結構轉換為檔案系統路徑.

pidl是待轉換的ITEMIDLIST的指針

pszPath是轉換後傳回的字元串, 該字元串的最大長度為PATH_MAX

如果轉換成功傳回TRUE, 否則為FALSE

本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/ShardowM/archive/2008/06/06/2516213.aspx