CFileDialog 如何获取文件夹路径

如图所示当点击“设置生成路径”弹出资源管理器对话框选择一个路径下的文件夹就返回而不是图上的打开文件返回的路径放在文本框下,这个如何做啊... 如图所示
当点击“设置生成路径”弹出资源管理器对话框选择一个路径下的文件夹就返回
而不是图上的打开文件
返回的路径放在 文本框下,这个如何做啊
展开
 我来答
mafangsan
2015-05-23 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2487万
展开全部
CFileDialog类封装了Windows常用的文件对话框。
它本身不是用于获取文件夹路径的,但是可以通过程序获取当前选择文件所在的路径,主要是依靠如下成员函数:
CString CFileDialog::GetPathName( )
该函数该得到对话框选中文件的完整的文件名,包括目录名和扩展名。
如:c:\ test\ test1.txt
那么,只要对该函数的返回值,求一下最后一个 右斜杠的位置,然后之前的东西就是文件夹,之后的就是文件名。
知识海洋的小学徒
2011-08-16 · TA获得超过889个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:427万
展开全部
//选择文件夹
CString GetDirectory()
{
BROWSEINFO bi;
char name[MAX_PATH];
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd();
bi.pszDisplayName = name;
bi.lpszTitle = "选择文件夹目录";
bi.ulFlags = BIF_RETURNFSANCESTORS;
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if(idl == NULL)
return "";
CString strDirectoryPath;
SHGetPathFromIDList(idl, strDirectoryPath.GetBuffer(MAX_PATH));
strDirectoryPath.ReleaseBuffer();
if(strDirectoryPath.IsEmpty())
return "";
if(strDirectoryPath.Right(1)!="\\")
strDirectoryPath+="\\";

return strDirectoryPath;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2009我们的
2015-07-11 · TA获得超过1323个赞
知道小有建树答主
回答量:1238
采纳率:30%
帮助的人:362万
展开全部
CString BrowseFolder(HWND hWnd, LPCTSTR lpTitle)
{

char szPath[MAX_PATH]={0};
BROWSEINFO m_bi;

m_bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
m_bi.hwndOwner = hWnd;
m_bi.pidlRoot = NULL;
m_bi.lpszTitle = lpTitle;
m_bi.lpfn = NULL;
m_bi.lParam = NULL;
m_bi.pszDisplayName = szPath;

LPITEMIDLIST pidl = ::SHBrowseForFolder( &m_bi );
if ( pidl )
{
if( !::SHGetPathFromIDList ( pidl, szPath ) ) szPath[0]=0;

IMalloc * pMalloc = NULL;
if ( SUCCEEDED ( ::SHGetMalloc( &pMalloc ) ) ) // 取得IMalloc分配器接口
{
pMalloc->Free( pidl ); // 释放内存
pMalloc->Release(); // 释放接口
}
}
return szPath;
}
=============================================================
调用
void CFlorderDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString SelectPath=BrowseFolder(this->m_hWnd,"选择目录");
AfxMessageBox(SelectPath);
}
用户在磁盘上寻找文件时,所历经的文件夹线路叫路径。路径分为绝对路径和相对路径。
1】绝对路径:从根文件夹开始的路径,以“\”作为开始。
2】相对路径:从当前文件夹开始的路径。
DOS程序命令中:d代表盘符 p代表路径 0(零)代表文件本身,%~dp0就是文件所在的完整路径

Windows应用中文件夹路径就是当打开文件夹时地址栏显示的信息,如
H:\Downloads\Game代表的就是Game文件夹的完整路径
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6f9d32a
2011-08-16 · 超过13用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:53.6万
展开全部
CFileDialog 如何获取文件夹路径
FileDlg.GetPathName();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-14
展开全部
俺只有dll函数:

char szPath[1024*10];

typedef int (WINAPI ICEPUB_GETSELECTPATH)(char *strPath,int maxLen);
ICEPUB_GETSELECTPATH *icePub_getSelectPath = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_getSelectPath = (ICEPUB_GETSELECTPATH *)GetProcAddress(hDLLDrv, "icePub_getSelectPath");
}

icePub_getSelectPath(szPath, 1023);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
AfxMessageBox(szPath);

参考资料: icePubDll.dll百度之即可

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式