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

    结束语

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

  • 相关阅读:
    GNSS学习笔记-观测量模型和定位定速方程
    矩阵学习-基本矩阵分类
    矩阵学习-QR分解和最小二乘问题求解
    ARM 处理器 MIPS/DMIPS/MFLOPS 理解
    GNSS学习笔记-信号频率分配表
    左移右移为负数的情况
    GNSS学习笔记-坐标转换
    GCC预编译宏查看
    Windows Store无法联网时安装WSL
    Virtual box中Ubuntu虚拟机磁盘碎片整理和空间清理方法
  • 原文地址:https://www.cnblogs.com/over140/p/1738880.html
Copyright © 2011-2022 走看看