允许IFileOpenDialog选择尚不存在的文件夹

时间:2011-12-01 03:47:43

标签: c++ winapi folderbrowserdialog

我尝试创建一个对话框来选择要将文件保存到的新文件夹。 IFileOpenDialog类很有效,只是它不允许选择新文件夹。

即。 "文件夹:C:\ existings \ new-folder"在对话框的底部弹出以下消息:

  

新文件夹
  路径不存在。
  检查路径,然后重试。

这是我的代码:

IFileDialog* fileDialog
CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, 
    IID_PPV_ARGS(&fileDialog));

DWORD options;
fileDialog->GetOptions(&options);

options &= ~FOS_FILEMUSTEXIST;  
options &= ~FOS_PATHMUSTEXIST;
fileDialog->SetOptions(options | FOS_PICKFOLDERS);

fileDialog->Show(parentWindow);

任何指针或黑客都将不胜感激!谢谢!


引用迈克尔的other question

  

[为了取消一些评论,SHBrowseForFolder API仍然存在,但仍然不是我们的UI决策者可接受的解决方案。]

这同样适用于此......

2 个答案:

答案 0 :(得分:2)

在选择文件夹时,您可以使用文件夹选择器对话框。 这个,右边的标志在底部有一个“创建”按钮和一个文本条目,允许你指定一个不存在的路径。

答案 1 :(得分:2)

我认为你想使用 CLSID_FileSaveDialog 而不是CLSID_FileOpenDialog。除了基类IFileDialog之外,还可以使用IFileSaveDialog