现在的位置: 首页 > 综合 > 正文

弹出选择文件夹的对话框 BROWSEINFO 的用法【MFC】

2014年01月13日 ⁄ 综合 ⁄ 共 895字 ⁄ 字号 评论关闭

以下是在vs2008中编译通过的代码,代码注释详细。要实现的功能是点击“浏览”按钮,即弹出选择文件夹的对话框。并将选择的文件夹或文件路径显示在MessageBox中。

void CMFC_TrojanKillerDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	BROWSEINFO bi;	                   //BROWSEINFO结构有很多成员参数可以自己设置
	ZeroMemory(&bi,sizeof(BROWSEINFO));     //将以&bi为起始地址,大小为sizeof(BROWSEINFO)的内存区域用0填充
	//bi.ulFlags=BIF_BROWSEINCLUDEFILES;        //设置弹出的对话框属性。此处意思为包含文件。如果不设这个值,默认的是只有文件夹。ulFlags还可以定义很多别的属性
	//bi.ulFlags=BIF_NEWDIALOGSTYLE;            //窗口可以调整大小,有新建文件夹按钮
	//bi.lpszTitle=L"指定要处理的文件夹";       //在窗口内显示提示用户的语句
	LPITEMIDLIST pidl = SHBrowseForFolder(&bi);   //Displays a dialog box enabling the user to select a Shell folder.
	TCHAR * path = new TCHAR[MAX_PATH];
	if(pidl != NULL)
	{
		SHGetPathFromIDList(pidl,path);      //Converts an item identifier list to a file system path
		MessageBox(path);
	}
}

显示文件夹窗口默认显示效果:

加上语句bi.ulFlags=BIF_BROWSEINCLUDEFILES;后不仅可以显示文件夹,还可以显示文件:


加上语句bi.ulFlags=BIF_NEWDIALOGSTYLE;后窗口可以调整大小,并有新建文件夹按钮:


加上语句bi.lpszTitle=L"指定要处理的文件夹"; 后在窗口内显示提示用户的语句:


随意选择一个文件,弹出MessageBox显示文件全路径:


抱歉!评论已关闭.