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

使用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

你可能感兴趣的:(C++,Windows)