MFC打开文件夹对话框

在BROWSEINFO中ulFlags中的,BIF_NEWDIALOGSTYLE表示开启文件对话框左下角的"新建文件夹"选项.

一个亲测有效的打开文件夹的例子:

void CFileDialogDemoDlg::OnBnClickedButtonImport()
{
    // TODO: Add your control notification handler code here
        HWND hwnd= GetSafeHwnd();   //得到窗口句柄
        CString filePath= TEXT(""); //得到文件路径
        LPMALLOC pMalloc;
        if (::SHGetMalloc(&pMalloc) == NOERROR) //取得IMalloc分配器接口
        {   
            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;
            bi.lpfn = NULL;
            bi.lParam = 0;
            bi.iImage = 0;
            if ((pidl = ::SHBrowseForFolder(&bi)) != NULL)  //取得IMalloc分配器接口
            {   
                if (::SHGetPathFromIDList(pidl, pszBuffer)) //获得一个文件系统路径
                {
                    filePath = pszBuffer;
                }
                pMalloc->Free(pidl); //释放内存
                MessageBox(filePath);
            }
            pMalloc->Release(); //释放接口
        }
}
posted @ 2020-03-08 19:14  心媛意码  阅读(739)  评论(0编辑  收藏  举报