众所周知,CFileDialog 只能选择要打开的文件而不能选择要打开的文件夹,下面介绍一种像CFileDialog 选择文件一样选择文件夹的方法,代码如下:
//////////////////////////////////////////////////////////////////////////
//功能: 像CFileDialog浏览打开文件一样打开文件夹
//参数:
// pParent:显示浏览窗口的父窗口句柄
// wndTitle:浏览窗口显示的标题
//Example:
// CString path = GetBrowseFolder(this->m_hWnd,"请选择要打开的目录");
//////////////////////////////////////////////////////////////////////////
CString GetBrowseFolder(HWND pParent,CString wndTitle)
{
char
szDir[MAX_PATH]
= {0};
BROWSEINFO
bi;
ITEMIDLIST
*pidl
= NULL;
bi.hwndOwner
= pParent;
bi.pidlRoot
= NULL;
bi.pszDisplayName
= szDir;
bi.lpszTitle
= wndTitle;
bi.ulFlags
= BIF_RETURNONLYFSDIRS;
bi.lpfn
= NULL;
bi.lParam
= 0;
bi.iImage
= 0;
pidl
= SHBrowseForFolder(&bi);
if(pidl
== NULL)
return "";
if(!SHGetPathFromIDList(pidl,szDir))
return "";
return
CString(szDir);
}
//功能:
//参数:
//
//
//Example:
//
//////////////////////////////////////////////////////////////////////////
CString GetBrowseFolder(HWND pParent,CString wndTitle)
{
}