在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决策者可接受的解决方案。]

有帮助吗?

解决方案

原因可以在文档中找到:

FOS_PICKFOLDERS:显示“打开”对话框,提供文件夹而非文件选择。

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

其他提示

我还没有玩过Windows 7对话框,但是下载了Windows®APICode Pack 就在今天早上,因为我正在我正在处理的应用程序中实现缩略图工具栏和图标叠加。它可能会指出你正确的方向。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top