MFC打开文件夹对话框初始化打开路径

7 篇文章 0 订阅

使用MFC开发程序时,有时需要选择文件夹,可使用SHBrowseForFolder解决,但此方法并不支持初始化选择路径。

博客主页:http://blog.csdn.net/xs1102

文章地址:http://blog.csdn.net/xs1102/article/details/77170181

打开文件夹对话框,代码如下:

BROWSEINFO bi;
TCHAR Buffer[MAX_PATH];
bi.hwndOwner = NULL;
bi.pidlRoot =NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = _T("选择文件夹:");
bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;
//打开选择文件夹对话框
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);
if(pIDList)
{
	//获取文件夹路径
	SHGetPathFromIDList(pIDList, Buffer);
}

上述代码可以打开一个对话框选择窗口,但并不能设置初始化路径。

设置初始化路径可以设置一个回调函数,在初始化完成之后设置选定的路径。

bi.lParam = (LPARAM)(TCHAR*)temppath;
bi.lpfn = OpenFolderProc;

回调函数定义如下:

//打开文件夹对话框的回调函数
int CALLBACK OpenFolderProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)  
{
	if(uMsg == BFFM_INITIALIZED)
	{
		//输出选择的文件夹
		SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
	}
	return 0;  
}
此时,便可以设置初始文件夹了。

为了进一步方便使用,还可以封装成一个类。

我这里不再贴出代码,需要的请自行下载。

http://download.csdn.net/download/xs1102/9933449

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值