16,472
社区成员
发帖
与我相关
我的任务
分享
CString pathname;
CFileDialog f_browser(true,NULL,NULL);
if (f_browser.DoModal()==IDOK)
{
pathname=f_browser.GetPathName();
m_PathName=pathname;
}
m_FilePath.SetWindowTextW(pathname);
LPMALLOC pMalloc = NULL;
CString thePathName(_T(""));
if(::SHGetMalloc(&pMalloc) == NOERROR)
{
BROWSEINFO bi;
TCHAR pszBuffer[MAX_PATH] = {0};
LPITEMIDLIST pidl;
bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = pszBuffer;
bi.lpszTitle = _T("Select Directory");
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
if((pidl = ::SHBrowseForFolder(&bi)) != NULL)
{
if(::SHGetPathFromIDList(pidl, pszBuffer))
thePathName = pszBuffer;
else
return;
pMalloc->Free(pidl);
}
pMalloc->Release();
}
void CBrowseDlg::OnGetbrowse()
{
// TODO: Add your control notification handler code here
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);
}
UpdateData(TRUE);
char szDir[MAX_PATH];
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = this->m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szDir;
bi.lpszTitle = "请选择目录";
bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if(pidl == NULL) return;
if(!SHGetPathFromIDList(pidl, szDir)) return;
else m_strPath = szDir;
UpdateData(FALSE);