永发信息网

关于mfc编程,选择文件夹对话框问题

答案:1  悬赏:0  手机版
解决时间 2021-08-17 23:28
  • 提问者网友:浮克旳回音
  • 2021-08-17 02:36

void CSaveFileDlg::OnButtonOpendir()
{
 // TODO: Add your control notification handler code here
 HWND hwnd=GetSafeHwnd();        //得到窗口对象的指针句柄
 CString filePath="";
 LPMALLOC pMalloc;  //像弹出系统打开和保存对话框一样,还有一个浏览文件夹对话框,右下角是新建文件夹,
 if(::SHGetMalloc(&pMalloc)==NOERROR)
 {
  BROWSEINFO  bi;
  TCHAR       pszBuffer[MAX_PATH];
  LPITEMIDLIST   pidl;

  bi.hwndOwner =hwnd;
  bi.pidlRoot  =NULL;
  bi.pszDisplayName  =pszBuffer;
  bi.lpszTitle  =_T("选择文件夹");//选择目录对话框的上部分的标题
  //添加新文件夹按钮 BIF_NEWDIALOGSTYLE
  bi.ulFlags=BIF_NEWDIALOGSTYLE|
   BIF_RETURNONLYFSDIRS|
   BIF_RETURNFSANCESTORS;  //Only return file system ancestors

  bi.lpfn =NULL;
  bi.lParam=0;
  bi.iImage=0;
  if((pidl=::SHBrowseForFolder(&bi))!=NULL)
  {
   if(::SHGetPathFromIDList(pidl,pszBuffer))  //获得一个文件系统路径
   {
    filePath=pszBuffer;
   }
   pMalloc->Free(pidl);   //释放内存
   MessageBox(filePath);
  }
  pMalloc->Release();        //释放接口
 }
}

 

其中BROWSEINFO是什么类?实现什么功能?LPITEMIDLIST呢?请大虾详细解释一下啊

最佳答案
  • 五星知识达人网友:春色三分
  • 2021-08-17 04:10
这个BROWSERINFO就是选择对话框的信息(比如要选择文件的类型,起始目录,还有就是存储路径的字符串等等)LPITEMIDLIST这个暂时没看出有什么用。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯