怎么用CFileDialog 选择文件夹

 我来答
蜗牛P科技
高粉答主

2016-01-24 · 图灵的梦想,信息的时代
蜗牛P科技
采纳数:68327 获赞数:214539

向TA提问 私信TA
展开全部
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文件夹的完整路径
城南明月羿当年
2015-07-03 · 知道合伙人生活技巧行家
城南明月羿当年
知道合伙人生活技巧行家
采纳数:24666 获赞数:123226
计算机爱好者

向TA提问 私信TA
展开全部
不能用CFileDialog

用::SHBrowseForFolder才行

例子:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BROWSEINFO bi;
bi.hwndOwner=NULL;
bi.pidlRoot=NULL;
bi.pszDisplayName=NULL;
bi.lpszTitle=NULL;
bi.ulFlags=0;
bi.lpfn =NULL;
bi.iImage =0;
LPCITEMIDLIST pidl=SHBrowseForFolder(&bi);
if(!pidl)
return;
TCHAR szDisplayName[255];
SHGetPathFromIDList(pidl,szDisplayName);
CString str(szDisplayName);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式