MFC弹出目录选择对话框以及指定弹出的目录

来源:互联网 发布:网络剧在哪个播放器有 编辑:程序博客网 时间:2024/04/29 16:27

原文地址:点击打开链接

弹出选择对话框可以应用在很多的地方,代码如下:

 TCHAR   szPath[MAX_PATH]={0};
 LPITEMIDLIST   pitem;
 BROWSEINFO   info;
 ::ZeroMemory(&info,sizeof(info));
 info.hwndOwner=this-> m_hWnd;
 info.lpszTitle=_T( "Choose   the   Folder: ");
 info.ulFlags=BIF_USENEWUI;
 info.pszDisplayName = szPath;
 //info.lpfn=BrowseCallbackProc;
 //info.lParam= long(&DefaultDir);
 if(pitem=::SHBrowseForFolder(&info))
 {
  ::SHGetPathFromIDList(pitem,szPath);
  UpdateData(FALSE);
 }

上面的代码弹出的对话框是用户默认的目录,要想指定弹出的目录,需要将上面注释的两行代码去掉,其中BrowseCallbackProc是一个回调函数,DefaultDir是你需要指定的弹出目录,BrowseCallbackProc代码如下:

int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
 switch(uMsg)
 {
 case BFFM_INITIALIZED:    //初始化消息
  ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData);
  break;
 case BFFM_SELCHANGED:    //选择路径变化,
  {
   char curr[MAX_PATH];  
   SHGetPathFromIDList((LPCITEMIDLIST)lParam,curr);  
   ::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)curr);  
  }
  break;
 default:
  break;
 }
 return 0;  
}

原创粉丝点击