IFileSaveDialog - 在Windows 7中选择文件夹

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决策者来说仍不是可接受的解决方案。]

有趣的是,Windows团队在4月份的博客示例中使用了这个标志! http://windowsteamblog.com/blogs/developers/archive/2009/04/16/light-up-with-windows-7-libraries.aspx - Philip Wallace
然后kazoobrewer的评论告诉他们这个方法已经不再有效。我想那应该是你了... - Philip Wallace
2
有时候感觉自己是唯一一个在野外使用API的开发者... - Michael Brewer-Davis
Windows 7 开发者博客条目的存档使用 Windows 7 图书馆点亮您的体验 - Ian Boyd
2个回答

5
这是因为文档中有相关说明:

FOS_PICKFOLDERS:展示选择文件夹而不是文件的打开对话框。

在“保存”操作中使用FOS_PICKFOLDERS本来就不被支持,但是Vista没有强制执行。使用IFileOpenDialog代替即可正常运行。 您正在选择一个现有文件夹(而非指定要创建的文件夹),因此“打开”始终是正确的选择。

2

我还没有使用过Windows 7对话框,但今天早上下载了Windows® API Code Pack,因为我正在实现应用程序中的缩略图工具栏和图标叠加。它可能会指引你朝着正确的方向前进。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接