【发布时间】:2012-01-10 07:13:19
【问题描述】:
我正在尝试创建一个对话框来选择一个新文件夹来保存文件。 IFileOpenDialog 类效果很好,只是它不允许选择新文件夹。
即对话框底部的“文件夹:C:\existings\new-folder”弹出如下信息:
新建文件夹
路径不存在。
检查路径并重试。
这是我得到的代码:
IFileDialog* fileDialog
CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&fileDialog));
DWORD options;
fileDialog->GetOptions(&options);
options &= ~FOS_FILEMUSTEXIST;
options &= ~FOS_PATHMUSTEXIST;
fileDialog->SetOptions(options | FOS_PICKFOLDERS);
fileDialog->Show(parentWindow);
任何指针或黑客将不胜感激!谢谢!
引用这个other question的迈克尔:
[为了阻止一些 cmets,SHBrowseForFolder API 仍然存在,但仍然不是我们的 UI 决策者可接受的解决方案。]
这里也一样……
【问题讨论】:
-
这引出了一个问题,为什么您使用打开的对话框来选择保存内容的位置...
-
Deanna,我正在尝试用本机版本替换 Java 选择文件对话框,因此它必须与原始行为匹配(不幸的是,这意味着文件夹选择对话框已退出)。使用 Java 对话框,您可以浏览到一个文件夹并输入要创建的新文件夹的名称(想象一个存档应用程序,您希望在其中选择一个新文件夹以保存一堆文件)。如果使用 FOS_PICKFOLDERS,尝试使用 IFileOpenDialog 执行此操作会失败。
-
他们不能直接点击原生的“创建文件夹”按钮并选择它吗?
-
这是可能的,只是没那么好 ;-) 想象一下,如果每次你想保存一个文件,你必须点击“创建文件”然后选择它。
-
@Deanna 这就像一个另存为对话框。用户试图指定某物将去哪里;不是某物在的地方。
标签: c++ winapi folderbrowserdialog