[MFC]选择目录对话框和选择文件对话框

制作选择目录和选择文件对话框,一般用到BROWSEINFO结构,如下:

  • BROWSEINFO结构: 
  •     HWND hwndOwner,指定对话框的父窗口的句柄 
  •     LPCITEMIDLIST pidlRoot,指定打开浏览的根目录,若为NULL,表示桌面 
  •     LPSTR pszDisplayName,指定一个缓冲区,接收用户选择的目录的显示名称 
  •     LPCSTR lpszTitle,树形视图上方显示的文字 
  •     UINT ulFlags,指定属性 
  •     BFFCALLBACK Lpfn,指定回调函数,发生某些事件时,指定的函数被调用,允许程序进一步定制对话框的行为 
  •     LPARAM lParam,若指定回调函数,参数值传递给回调函数 
  •     int iImage,代表用户选择的文件夹对象的图标在系统图标列表中的索引

下面贴上选择目录对话框的代码实现:

void CExchangeDlg::OnBrowser() // 选择目录,我这里是浏览按钮

{

char szPath[MAX_PATH];
 CString str;

 ZeroMemory(szPath,sizeof(szPath));

 BROWSEINFO bi;
 bi.hwndOwner=m_hWnd;
 bi.pidlRoot=NULL;
 bi.pszDisplayName=szPath;
 bi.lpszTitle="请选择所需目录:";
 bi.ulFlags=0;
 bi.lpfn=NULL;
 bi.lParam=0;
 bi.iImage=0;

 LPITEMIDLIST lp=SHBrowseForFolder(&bi);

 if(lp && SHGetPathFromIDList(lp,szPath))
 {
  str.Format("选择的目录为 %s",szPath);
  AfxMessageBox(str);

 }else{
  AfxMessageBox("无效的目录,请重新选择");

 }
 m_selectFile=szPath;
 UpdateData(FALSE);

}

文件选择对话框实现代码:

 CString strFile=_T(" ");
 CFileDialog dlgFile(TRUE,NULL,NULL,OFN_HIDEREADONLY,
  _T("Describe Files(*.cfg) | *.cfg | All Files(*.*) | *.* |"),NULL);
  if(dlgFile.DoModal())
  {
   strFile=dlgFile.GetPathName();

  }
  m_selectFile=strFile;  //m_selectFile对话框中静态文本框关联的变量

posted @ 2015-06-27 17:12  法天象地  阅读(603)  评论(0编辑  收藏  举报