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();//此处得到绝对地址
}
}