原文:http://babybandf.blog.163.com/blog/static/61993532009313533142/
在進行文件操作時,除了使用"文件"對話框來獲得文件路徑外,還常常要獲得文件夾的路徑,這就需要使用"文件瀏覽"對話框。可以通過API函數SHBrowseForFolder來顯示"文件瀏覽"對 話框。
語法格式如下:
WINSHELLAPI LPITEMIDLIST WINAPI
SHBrowseForFolder( LPBROWSEINFO lpbi ); |
其中,lpbi是指BROWSEINFO結構指針。
通過BROWSEINFO結構可以設置"文件瀏覽"對話框的信息。
例6.11 下面使用"文件瀏覽"對話框選擇文件夾。程序設計步驟如下:
(1)創建一個基於對話框的應用程序,將對話框的Caption屬性修改爲"使用文件瀏覽對話框選擇文件夾"。
(2)向對話框中添加一個羣組框控件、一個靜態文本控件和一個按鈕控件。
(3)處理"選擇文件夾"按鈕的單擊事件,代碼如下。
void CBrowseDlg::OnGetbrowse()
{
CString ReturnPach; //字符串變量
TCHAR szPath[_MAX_PATH]; //保存路徑變量
BROWSEINFO bi; // BROWSEINFO結構變量
bi.hwndOwner = NULL; //HWND句柄
bi.pidlRoot = NULL; //默認值爲NULL
bi.lpszTitle = _T("文件瀏覽對話框"); //對話框標題
bi.pszDisplayName = szPath; //選擇文件夾路徑
bi.ulFlags = BIF_RETURNONLYFSDIRS; //標記
bi.lpfn = NULL; //默認值爲NULL
bi.lParam = NULL; //回調消息
LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi); //顯示文件瀏覽對話框
if(pItemIDList)
{
if(SHGetPathFromIDList(pItemIDList,szPath)) //判斷是否獲得文件夾路徑
ReturnPach = szPath; //獲得文件夾路徑
}
else
{
ReturnPach = ""; //文件夾路徑爲空
}
m_Path.SetWindowText(ReturnPach); //顯示文件夾路徑
} |