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数组。

    结束语

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

  • 相关阅读:
    [cf1217F]Forced Online Queries Problem
    [cf1215F]Radio Stations
    超级楼梯[HDU2041]
    亲和数[HDU2040]
    三角形[HDU2039]
    今年暑假不AC[HDU2037]
    Counting Squares[HDU1264]
    CodeForces Round 195 Div2
    Square Coins[HDU1398]
    The number of divisors(约数) about Humble Numbers[HDU1492]
  • 原文地址:https://www.cnblogs.com/over140/p/1738880.html
Copyright © 2011-2022 走看看