在MFC中有时候只需要选择一个文件夹而不需要选择文件,这时候可以通过下列方式来进行选择
void CXXXDlg::OnGetDirectory
{
//以下为打开文件夹对话框并选择文件夹路径
BROWSEINFO bi;
char Buffer[MAX_PATH];//初始化入口参数bi开始
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;//初始化制定的root目录很不容易,
bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框
bi.lpszTitle = "请选择包含矿区Shp文件的文件夹";
bi.ulFlags = BIF_BROWSEINCLUDEFILES;//包括文件
bi.ulFlags = BIF_EDITBOX;//包括文件
bi.ulFlags= BIF_NEWDIALOGSTYLE;//可调整大小,有新建文件夹
bi.lpfn = NULL;
bi.iImage=IDR_MAINFRAME;//初始化入口参数bi结束
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);//取得文件夹路径到Buffer里
sFolderPath = Buffer;//将路径保存在一个CString对象里
}
// AfxMessageBox(sFolderPath);
//以上为打开文件夹对话框并选择文件夹路径
}
显示文件夹窗口默认显示效果:
加上语句bi.ulFlags=BIF_BROWSEINCLUDEFILES;后不仅可以显示文件夹,还可以显示文件:
加上语句bi.ulFlags=BIF_NEWDIALOGSTYLE;后窗口可以调整大小,并有新建文件夹按钮:
加上语句bi.lpszTitle=L"指定要处理的文件夹"; 后在窗口内显示提示用户的语句: