当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
MFC设置文件夹目录时遇到的问题
发布时间:2010/5/20 14:59:53 来源:城市学习网 编辑:ziteng
  前言
  关键字: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"无效的目录,请重新选择"); [NextPage]   二、解决错误
  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数组。
  结束语
  折腾很久,搜了老半天,最后把修改前的代码和修改后的代码比较了一下,才猜想出来。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved