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

 

结束语
 

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


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/583030,如需转载请自行联系原作者

相关文章
|
8月前
win11查看文件/文件夹所使用的程序
win11查看文件/文件夹所使用的程序
70 0
|
8月前
|
安全
如何打开WindowsApps文件夹
如何打开WindowsApps文件夹
126 1
|
8月前
|
C#
C# Winform 选择文件夹和选择文件
C# Winform 选择文件夹和选择文件
95 0
|
前端开发 C++
【Qt】实现显示指定路径目录结构
使用 Qt 的 QTreeView 显示指定路径下的目录结构
569 0
|
Python
Pycharm 在文件夹目录下,对文件重命名,右键运行和文件名不一致问题
在解答学员问题的时候!想着这个问题或许是大部分同学都会遇到的一个问题,于是在此记录!也是想着给一些学员解答疑惑。
Pycharm 在文件夹目录下,对文件重命名,右键运行和文件名不一致问题
Qt 解决程序动态库必须和可执行文件放同一文件夹
文章目录 Qt 解决程序动态库必须和可执行文件放同一文件夹 1 背景 2 使用场景描述 2.1 添加动态库 2.2 更改编译目录 2.3 复制库文件到编译目录并运行程序 2.4 复制库文件到程序根目录 2.5 Release下测试 3 实现动态库文件夹分类 3.1 需求 3.2 实现 3.2.1 查看项目运行配置 3.3 结果 3.3 结果
692 0
Qt 解决程序动态库必须和可执行文件放同一文件夹
MFC删除某个文件夹下的所有目录文件
1、该函数是删除文件夹下的所有文件 http://bbs.csdn.net/topics/390448664 BOOL CMainFrame::DeleteDirectory(con...
1850 0
|
Windows
win10新建文件夹重命名卡死完美解决办法
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79395700 win10的用户不少都遇到了新建文件夹重命名便会卡死好久,恢复后文件夹的重命名依然没成功。
4980 0