7

在 Vista 中,我一直使用一个IFileSaveDialog让用户选择“另存为”文件夹。比如说,用户导出一个图像文件夹,并且需要选择一个新的或现有的目标文件夹。

简而言之,代码如下所示:

IFileSaveDialog* dialog; // created
dialog->SetOptions(FOS_PICKFOLDERS);
dialog->Show(NULL);
dialog->GetResult(&shellItem)

在 Windows 7 中,该FOS_PICKFOLDERS选项似乎已被禁止(并且在API中被标记为这样)。SetOptions调用的返回值为E_INVALIDARG。如果我使用 IFileOpenDialog,我可以设置文件夹选项,但是在选择不存在的文件夹时会提示用户错误(尽管我的设置标志建议不要这样做)。

有没有另一种方法可以让新IFileDialog的作为“保存文件夹”对话框?

[为了避免一些评论,SHBrowseForFolder API 仍然存在,但对于我们的 UI 决策者来说仍然不是一个可接受的解决方案。]

4

2 回答 2

5

原因可以在文档中找到:

FOS_PICKFOLDERS:显示打开对话框,提供文件夹而不是文件的选择。

从来不应该支持使用FOS_PICKFOLDERS保存” - 但Vista没有强制执行它。改用IFileOpenDialog,你很高兴。您正在选择现有文件夹(未指定要创建的文件夹),因此打开始终是正确的选择。

于 2009-12-01T06:50:03.267 回答
2

我还没有玩过 Windows 7 对话框,但是今天早上我下载了Windows® API 代码包,因为我正在我正在开发的应用程序中实现缩略图工具栏和图标叠加。它可能会为您指明正确的方向。

于 2009-10-26T20:10:03.030 回答