天天看点

[MFC]设置文件夹目录时遇到的问题

一、问题代码

    CString szPath;

    BROWSEINFO bi;   

    bi.hwndOwner = m_hWnd;

    bi.pidlRoot = NULL;   

    bi.pszDisplayName = szPath.GetBuffer();   

    bi.lpszTitle =L"请选择目录:";   

    bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; 

    bi.lpfn = NULL;   

    bi.lParam = 0;   

    bi.iImage = 0;   

    //弹出选择目录对话框

    LPITEMIDLIST lp = SHBrowseForFolder(&bi);   

    if(lp && SHGetPathFromIDList(lp, szPath.GetBuffer()))   

        AfxMessageBox(szPath);

    else   

        AfxMessageBox(L"无效的目录,请重新选择");

二、报错截图

  

三、解决错误

    TCHAR szPath[MAX_PATH];

    bi.pszDisplayName = szPath;   

    if(lp && SHGetPathFromIDList(lp, szPath))   

        AfxMessageBox(CString(szPath));

    说明:把CString改成了TCHAR数组。