В 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
выступать в качестве диалогового окна "сохранить папку"?
[Чтобы исключить некоторые комментарии, API SHBrowseForFolder все еще существует, но все еще не является приемлемым решением для наших разработчиков UI.]