MFC打开选择文件目录对话框且显示新建文件夹按钮

在MFC中,若要打开文件目录选择对话框,需要使用BROWSEINFO结构体,具体代码如下:

void CBatchConvert::OnBrowseOutDir()
{
	// TODO: 在此添加控件通知处理程序代码
	char szPath[MAX_PATH]; //存放选择的目录路径 
	memset(szPath, 0, sizeof(szPath));   

	BROWSEINFO bi;   
	bi.hwndOwner = m_hWnd;
	bi.pidlRoot = NULL;
	bi.pszDisplayName = (LPWSTR)szPath;
	bi.lpszTitle = _T("请选择转换后的文件输出目录:");
	bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
	bi.lpfn = NULL;
	bi.lParam = 0;
	bi.iImage = 0;
	//弹出选择目录对话框
	LPITEMIDLIST lp = SHBrowseForFolder(&bi);

	if(lp && SHGetPathFromIDList(lp, (LPWSTR)szPath))
	{
		CString strOutDir;
		strOutDir.Format(_T("%s"), szPath);
		AfxMessageBox(strOutDir);
	}
}


在代码中有一行

bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;

这里的BIF_RETURNONLYFSDIRS表示若当前选择的目录不可用,则确定按钮为灰色,禁止操作,而BIF_NEWDIALOGSTYLE则表示显示新建文件夹按钮,可以在选择目录对话框中创建文件夹。

Comments are closed.