使用vc打开目录选择对话框

打开目录选择对话框可以使用API函数SHBrowseForFolder来实现。
 该函数原型为:
      LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi); 
 其中LPBROWSEINFO为BROWSEINFO结构的指针。

BROWSEINFO结构如下:
typedef struct _browseinfo {
    HWND hwndOwner;
    LPCITEMIDLIST pidlRoot;
    LPSTR pszDisplayName;
    LPCSTR lpszTitle;
    UINT ulFlags;
    BFFCALLBACK lpfn;
    LPARAM lParam;
    int iImage;
} BROWSEINFO;

调用例子如下:

CString GetSaveFolder()
{
 CString sFolderPath;
 BROWSEINFO bi; 
 TCHAR Buffer[MAX_PATH];
 LPITEMIDLIST pIDList;
 LPMALLOC pMalloc;
 
 ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
 if (!SUCCEEDED(::SHGetMalloc(&pMalloc)))
 {
  return sFolderPath;
 }

 ZeroMemory(&bi,sizeof(bi));
 //初始化入口参数bi开始
 bi.hwndOwner = NULL;
 bi.pidlRoot = NULL;
 bi.pszDisplayName = Buffer;
 bi.lpszTitle = _T("请选择招标文件的保存路径:");
 bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS;
 bi.lpfn = NULL;
 bi.iImage = 0;
 //初始化入口参数bi结束
 pIDList= SHBrowseForFolder(&bi);   //调用显示选择对话框
 if(pIDList != NULL)
 {
  //取得文件夹路径到Buffer里
  if(SHGetPathFromIDList(pIDList, Buffer))
  {   
   sFolderPath = Buffer;
  }
  else
  {
   sFolderPath = _T("");
  }
  pMalloc->Free(pIDList);
 }
 pMalloc->Release();
 return sFolderPath;
}

注意:其中BROWSEINFO的ulFlags的值设为BIF_NEWDIALOGSTYLE,可以使弹出的目录选择对话框允许用户交互,

能够添加文件夹等功能。

参考文章:VC打开目录选择对话框

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值