zoukankan      html  css  js  c++  java
  • [MFC]设置文件夹目录时遇到的问题


    前言

      关键字:SHBrowseForFolder、SHGetPathFromIDList

      问题很菜,在网上找了一段想当然的代码改吧改吧,结果报错了,甚至都不知道错哪里,调试也没法跟踪。

    正文

      一、问题代码

        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];
        BROWSEINFO bi;   
        bi.hwndOwner = m_hWnd;
        bi.pidlRoot = NULL;   
        bi.pszDisplayName = szPath;   
        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))   
            AfxMessageBox(CString(szPath));
        
    else   
            AfxMessageBox(L"无效的目录,请重新选择");

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

    结束语

      折腾很久,搜了老半天,最后把修改前的代码和修改后的代码比较了一下,才猜想出来。

  • 相关阅读:
    本学期课程总结
    “进度条”博客——第十六周
    “进度条”博客——第十五周
    《梦断代码》阅读笔记03
    第二期冲刺站立会议个人博客16(2016/6/09)
    第二期冲刺站立会议个人博客15(2016/6/08)
    第二期冲刺站立会议个人博客14(2016/6/07)
    第二期冲刺站立会议个人博客13(2016/6/06)
    第二期冲刺站立会议个人博客12(2016/6/05)
    “进度条”博客——第十四周
  • 原文地址:https://www.cnblogs.com/over140/p/1738880.html
Copyright © 2011-2022 走看看