Разрешение IFileOpenDialog выбрать папку, которая еще не существует - PullRequest
2 голосов
/ 01 декабря 2011

Я пытаюсь создать диалоговое окно для выбора новой папки для сохранения файлов. Класс IFileOpenDialog прекрасно работает, за исключением того, что он не позволяет выбирать новую папку.

т.е. «Папка: C: \ Существование \ Новая папка» в нижней части диалогового окна появляется следующее сообщение:

новая папка
Путь не существует.
Проверьте путь и попробуйте снова.

Вот код, который я получил:

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);

Любые указатели или хаки будут оценены! Спасибо!


Цитирую Майкла из этого другого вопроса :

[Чтобы исключить некоторые комментарии, API SHBrowseForFolder все еще существует, но все еще не является приемлемым решением для наших разработчиков интерфейса.]

То же самое относится и здесь ...

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Я думаю, что вы хотите использовать CLSID_FileSaveDialog вместо CLSID_FileOpenDialog.И возможно использовать IFileSaveDialog в дополнение к базовому классу IFileDialog.

2 голосов
/ 01 декабря 2011

При выборе папки вы можете использовать диалоговое окно выбора папки. При этом с правыми флагами внизу есть кнопка «Создать» и текстовая запись, позволяющая указать несуществующий путь.

...