【问题标题】:IFileSaveDialog - choosing folders in Windows 7IFileSaveDialog - 在 Windows 7 中选择文件夹
【发布时间】:2010-12-10 06:21:12
【问题描述】:

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

简单来说,代码是这样的:

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

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

是否有其他方法可以让新的IFileDialog 充当“保存文件夹”对话框?

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

【问题讨论】:

标签: winapi windows-7 folderbrowserdialog


【解决方案1】:

原因可以在文档中找到:

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

使用FOS_PICKFOLDERS 表示 "save" 从来不应该得到支持 - 但 Vista 并没有强制执行它。改用IFileOpenDialog 就可以了。 您正在选择现有文件夹(未指定要创建的文件夹),因此打开始终是正确的选择。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 2011-01-15
      • 2013-01-25
      • 1970-01-01
      相关资源
      最近更新 更多