VC中如何得到一個資料夾的路徑
我們經常需要用到“選擇資料夾”對話方塊,相應的API已經很好用,但稍嫌麻煩,所以我專門將其封裝了一下,力求一步到位。
函式封裝如下:
/*****************************************************************
** 函式名:GetPath
** 輸 入: 無
** 輸 出: CString strPath
** strPath非空, 表示使用者選擇的資料夾路徑
** strPath為空, 表示使用者點選了“取消”鍵,取消選擇
** 功能描述:顯示“選擇資料夾”對話方塊,讓使用者選擇資料夾
****************************************************************/
CString GetPath()
{
CString strPath = "";
BROWSEINFO bInfo;
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner = m_hWnd;
bInfo.lpszTitle = _T("請選擇路徑: ");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpDlist; //用來儲存返回資訊的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //顯示選擇對話方塊
if(lpDlist != NULL) //使用者按了確定按鈕
{
TCHAR chPath[255]; //用來儲存路徑的字串
SHGetPathFromIDList(lpDlist, chPath);//把專案標識列表轉化成字串
strPath = chPath; //將TCHAR型別的字串轉換為CString型別的字串
}
return strPath;
}
呼叫時只需要用到以下程式碼:
CString strPath = GetPath();
則strPath為使用者選擇的資料夾路徑。如果使用者點選了對話方塊的取消鍵,則strPath為空字串("");