MFC文件夹浏览器IFileOpenDialog

时间:2013-01-01 09:40:27

标签: visual-c++ mfc

我正在尝试创建一个简单的MFC文件夹浏览器并在MSDN中查找答案,这里也是: 到目前为止,这是我的代码:

void CAddFilterDlg::OnBnClickedAddDll()
{
    CFileDialog dlg(TRUE/*bOpenFileDialog*/, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT , NULL, NULL, 0, TRUE/*bVistaStyle*/);
    CString folderPath = dlg.GetFolderPath();
    IFileOpenDialog * openDlg = dlg.GetIFileOpenDialog();
    if ( openDlg != NULL )
    {
       openDlg->SetOptions(FOS_PICKFOLDERS);
       openDlg->Release();
    }

dlg.DoModal();
}

我得到的错误是:

  
      
  1. 不允许指向不完整类类型的指针(这适用于openDlg)
  2.   
  3. 标识符“FOS_PICKFOLDERS”未定义
  4.   

我正在开发visual studio 2010,win7

1 个答案:

答案 0 :(得分:2)

我知道这是一个有点过时的问题,但我最近遇到了同样的问题,也很难找到一个简单易用的解决方案。

我发现这个类似CFileBrowser的类是解决这个问题的一个非常有效和简单的解决方案:

CFolderPickerDialog FolderSelectDialog(theApp.xAM->GetExportPath().c_str(),NULL,this);

if (FolderSelectDialog.DoModal() == IDOK)
{
    CString cBuff = FolderSelectDialog.GetPathName();

    std::wstring wsPath = std::wstring(cBuff);

    theApp.xAM->SetExportPath(wsPath);

    CEditExportFolderPath.SetWindowTextW(cBuff);
}