5

私は単純な 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. 識別子「FOS_PICKFOLDERS」は定義されていません

私はビジュアルスタジオ2010、win7に取り組んでいます

4

1 に答える 1

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);
}
于 2015-07-27T13:57:11.553 に答える