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

原文地址:点击打开链接

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

 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;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值