1. 程式人生 > >VC中如何得到一個資料夾的路徑

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為空字串("");