在编写MFC程序的时候,我们经常用到浏览功能,比如选取文件或者文件夹。前段时间写程序用到这个功能,在此记录一下,代码可用。
1.选取文件夹
BROWSEINFO bi;
TCHAR szDisplayName[MAX_PATH];
LPITEMIDLIST pidl;
LPMALLOC pMalloc = NULL;
RtlZeroMemory(&bi, sizeof(bi));
bi.hwndOwner = GetSafeHwnd();
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = _T("请选择目录");
bi.ulFlags = BIF_RETURNONLYFSDIRS;
pidl = SHBrowseForFolder(&bi);
if (pidl)
{
SHGetPathFromIDList(pidl, szDisplayName); //Set the directory name.
AfxMessageBox(szDisplayName);//szDisplayName就是你选的目录
}
CString strAppName;//当前工作目录
::GetModuleFileName(NULL, strAppName.GetBuffer(_MAX_PATH), _MAX_PATH);
strAppName.ReleaseBuffer();
int nPos = strAppName.ReverseFind('\\');
strAppName = strAppName.Left(nPos + 1);
// 文件扩展名过滤器
LPCTSTR szFilter = "位图文件 (*.bmp)|*.bmp|All Files (*.*)|*.*||";// 此处是选取bmp格式图片
//第一个参数变成FALSE,就是保存文件,打开用TRUE,初始目录是当前工作目录, 初始选择的文件名是file
CFileDialog dlg(FALSE,NULL ,strAppName+"file",OFN_ENABLESIZING ,szFilter,NULL);
dlg.DoMal(); //显示对话框