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));取得文件夹路径到buffer
strDirectoryPath.ReleaseBuffer();//好习惯,用了GetBuffer后就需要ReleaseBuffer().
if(strDirectoryPath.IsEmpty())
return "";
if(strDirectoryPath.Right(1)!="\\")
strDirectoryPath+="\\";
return strDirectoryPath;//返回的就是选择的文件夹地址!!
}
//=====================以下是比较简单的调用,获得文件地址====
void Revert::OnBn。。。()//一般都写在某个btn下,点击获得路径
{
CFileDialog dlg(TRUE,0,0,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);//,"Worksheet Files(*.xls)|*.xls")";加这个排除其他项
if(dlg.DoModal()==IDOK)//已经选择
{
CString strFilePath = dlg.GetPathName();//此处得到绝对地址
}
}
本文介绍了一个使用C++编写的函数,该函数能够打开文件夹选择对话框并返回所选文件夹的完整路径。此外,还提供了一个简单的示例来演示如何获取文件路径。
1203

被折叠的 条评论
为什么被折叠?



