2009-10-26 99 views
5

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

简言之,将码是这样的:

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

在Windows 7,FOS_PICKFOLDERS选项似乎已被禁止(在the API被标记为这样)。 SetOptions呼叫的返回值是E_INVALIDARG。如果我使用IFileOpenDialog,我可以设置文件夹选项,但在选择不存在的文件夹时(尽管我的设置标志暗示不要执行此操作),系统会提示用户输入错误。

是否有另一种方法让新的IFileDialog充当“保存文件夹”对话框?

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

+0

有趣的是,Windows团队在4月份的博客样本中使用了此标志! http://windowsteamblog.com/blogs/developers/archive/2009/04/16/light-up-with-windows-7-libraries.aspx – 2009-10-26 20:13:34

+0

而来自kazoobrewer的评论告诉他们它不再有效。我想那会是你然后... – 2009-10-26 20:14:42

+2

有时候感觉就像你是唯一在野外使用API​​的开发人员... – 2009-10-28 16:35:25

回答

4

这样做的原因可以在文档中找到:

FOS_PICKFOLDERS:目前开放式对话提供了文件夹,而不是文件的选择。

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

2

我还没有与Windows 7对话框中玩耍了还,但下载Windows® API Code Pack就在今天上午,因为我正在执行我正在处理的应用程序中的缩略图工具栏和图标叠加层。它可能会指出你在正确的方向。

相关问题