IFileSaveDialog - 在Windows 7中选择文件夹
-
06-07-2019 - |
题
在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 就在今天早上,因为我正在我正在处理的应用程序中实现缩略图工具栏和图标叠加。它可能会指出你正确的方向。
不隶属于 StackOverflow