MFC 獲取檔案和資料夾的路徑
阿新 • • 發佈:2019-02-13
1.獲取檔案的路徑
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=L"開啟檔案";
//fileDlg.m_ofn.lpstrFilter=_T("Program(*.exe)\0*.exe\0All Files(*.*)\0*.*\0\0");
if(IDOK==fileDlg.DoModal())
{
LPWSTR lpPathName = fileDlg.m_ofn.lpstrFile;
SetDlgItemText(IDC_EDIT_SERV_PATH,lpPathName);
}
2.獲取資料夾的路徑 (1)BROWSEINFO結構
typedef struct_browseinfo
{
HWND hwndOwner;
LPCITEMIDLIST pidlRoot;
LPSTR pszDisplayName;
LPCSTR lpszTitle;
UINT ulFlags;
BFFCALLBACK lpfn;
LPARAM lParam;
int iImage;
}BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
●成員變數
hwndOwner:瀏覽資料夾對話方塊的父窗體控制代碼。
pidlRoot:ITEMIDLIST結構的地址,包含瀏覽時的初始根目錄,而且只有被指定的目錄和其子目錄才顯示在瀏覽資料夾對話方塊中。該CString m_strFileOut = _T("");
TCHAR servPath[MAX_PATH];//用來存放資料夾路徑
BROWSEINFO bi;
LPITEMIDLIST pidl;
bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = servPath;
bi.lpszTitle = _T("選擇輸出檔案路徑");
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = NULL;
bi.iImage = NULL;
if((pidl = SHBrowseForFolder(&bi)) != NULL)
{
if(SUCCEEDED(SHGetPathFromIDList(pidl, servPath))) //得到資料夾的全路徑,不要的話,只得本資料夾名
{
SetDlgItemText(IDC_EDIT_SERV_PATH,servPath);
}
}