MFC选择文件夹对话框

void Dlg::OnBtNdBrowse()
{
 // TODO: Add your control notification handler code here
 BROWSEINFO bi = {0};

 TCHAR szFilePath[MAX_PATH] = {0};
 ITEMIDLIST *pidl = {0};

 bi.hwndOwner = m_hWnd;
 bi.lpszTitle = "请选择要保存到的文件夹";
 bi.ulFlags  = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_NEWDIALOGSTYLE;
 bi.lpfn   = BrowseCallbackProc;

 bi.lParam = (LPARAM)"C:"; //默认文件夹

 pidl = ::SHBrowseForFolder(&bi);  //获取目录
 if (pidl == NULL)
 {
  //MessageBox("选择的目录不能为空");
  return;
 }

 if (!::SHGetPathFromIDList(pidl, szFilePath)) //获取目录
  return;

 int fpl = strlen(szFilePath);
 if(szFilePath[fpl-1] != ”)
 {
  szFilePath[fpl] = ”;
  szFilePath[fpl+1] = ‘’;
 }
 //szFilePath 这里获取到了

}

int CALLBACK Dlg::BrowseCallbackProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
 if(uMsg == BFFM_INITIALIZED ){        //设置初始化目录
  ::SendMessage(hWnd, BFFM_SETSELECTION, TRUE, lpData);
 }
 return 0;
}