1. 程式人生 > >MFC開啟資料夾選擇對話方塊

MFC開啟資料夾選擇對話方塊

函式名:OnBnClickedButtonDir

函式功能:通過點選按鈕,彈出開啟資料夾選擇對話方塊

引數:無

返回值:無

額外說明:

ulFlags標誌位說明:

BIF_BROWSEFORCOMPUTER:返回計算機名。除非使用者選中瀏覽器中的一個計算機名,否則該對話方塊中的“OK”按鈕為灰色。
BIF_BROWSEFORPRINTER:返回印表機名。除非選中一個印表機名,否則“OK”按鈕為灰色。
BIF_BROWSEINCLUDEFILES:瀏覽器將顯示目錄,同時也顯示檔案。
BIF_DONTGOBELOWDOMAIN:在樹形視窗中,不包含域名底下的網路目錄結構。
BIF_EDITBOX:瀏覽對話方塊中包含一個編輯框,在該編輯框中使用者可以輸入選中項的名字。
BIF_RETURNFSANCESTORS:返回檔案系統的一個節點。僅僅當選中的是有意義的節點時,“OK”按鈕才可以使用。
BIF_RETURNONLYFSDIRS:僅僅返回檔案系統的目錄。例如:在瀏覽資料夾對話方塊中,當選中任意一個目錄時,該“OK”按鈕可用,而當選中“我的電腦”或“網路上的芳鄰”等非有意義的節點時,“OK”按鈕為灰色。
BIF_STATUSTEXT:在對話方塊中包含一個狀態區域。通過給對話方塊傳送訊息使回撥函式設定狀態文字。
BIF_VALIDATE:當沒有BIF_EDITBOX標誌位時,該標誌位被忽略。如果使用者在編輯框中輸入的名字非法,瀏覽對話方塊將傳送BFFM_VALIDATEFAILED訊息給回撥函式。

作者:weekdawn

void CMD5TestDlg::OnBnClickedButtonDir()
{
	// TODO: 在此新增控制元件通知處理程式程式碼
	//選擇輸出路徑  
	TCHAR szDir[100];  
	BROWSEINFO bi;   
	ITEMIDLIST *pidl;   
	bi.hwndOwner = this->m_hWnd;   
	bi.pidlRoot = NULL;  
	bi.pszDisplayName = szDir;//輸出緩衝區
	bi.lpszTitle = _T("請選擇資料夾:"); //選擇介面的標題  
	bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;//新的介面
	bi.lpfn = NULL;  
	bi.lParam = 0;  
	bi.iImage = 0;  
	pidl = SHBrowseForFolder(&bi);//彈出對話方塊   
	if (pidl == NULL)//點了取消,或者選擇了無效的資料夾則返回NULL  
		return;  

	if(SHGetPathFromIDList(pidl, szDir))   
	{
		SetDlgItemText(IDC_EDIT_DIR,szDir);//szDir就是選擇的資料夾路徑,IDC_EDIT_DIR是edit控制元件的ID
	}

}