
在 VC++ 開發中,資料夾瀏覽對話框是常見需求。早期版本(版本 5.0 之前,通常指 Windows 2000 前)若要在對話框加入「新增資料夾」按鈕,需自行撰寫大量程式碼。但在版本 5.0 之後,只需設定一個旗標 BIF_USENEWUI,即可獲得具備「新增資料夾」按鈕、右鍵選單等現代化功能的瀏覽介面,如上圖所示。
void CTestBrowseDlg::OnBrowse()
{
CString str;
BROWSEINFO bi;
char name[MAX_PATH];
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = GetSafeHwnd();
bi.pszDisplayName = name;
bi.lpszTitle = "Select folder";
bi.ulFlags = BIF_USENEWUI; // 關鍵:啟用新版 UI
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if (idl == NULL) return;
SHGetPathFromIDList(idl, str.GetBuffer(MAX_PATH));
str.ReleaseBuffer();
m_Path = str;
if (str.GetAt(str.GetLength() - 1) != '\\')
m_Path += "\\";
UpdateData(FALSE);
}
BIF_USENEWUI 旗標會啟用類似 Windows 2000/XP 風格的對話框,包含工具列、新增資料夾按鈕、右鍵內容選單等。點擊下方連結下載完整示範專案原始碼。