1. 程式人生 > >MFC開啟資料夾對話方塊初始化開啟路徑

MFC開啟資料夾對話方塊初始化開啟路徑

使用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;  
}
此時,便可以設定初始檔案夾了。

為了進一步方便使用,還可以封裝成一個類。

我這裡不再貼出程式碼,需要的請自行下載。