IFileSaveDialog - choosing folders in Windows 7

folderbrowserdialog, winapi, windows-7

Solution

The reason for this can be found in the documentation:

`FOS_PICKFOLDERS`: Present the Open dialog offering a choice of folders rather than files.

Using `FOS_PICKFOLDERS` for "save" was never supposed to be supported - but Vista didn't enforce it. Use `IFileOpenDialog` instead and you're good to go. You are picking an existing folder (not specifying a folder to create), so open was always the correct choice.

Problem

In Vista, I have been using an `IFileSaveDialog` to let users pick a "save-as" folder. Users export a folder of images, say, and need to choose a new or existing target folder. Briefly, the code goes like this: ``` IFileSaveDialog* dialog; // created dialog->SetOptions(FOS_PICKFOLDERS); dialog->Show(NULL); dialog->GetResult(&shellItem) ``` In Windows 7, the `FOS_PICKFOLDERS` option appears to have been disallowed (and is marked as such in the API). The return value on the `SetOptions` call is `E_INVALIDARG`. If I use a IFileOpenDialog, I'm allowed to set the folders option, but the user is prompted with an error when choosing a nonexistent folder (despite my setting flags suggesting not to do this). Is there an alternate way to get the new `IFileDialog` to act as a "save folder" dialog? [To head off some comments, the SHBrowseForFolder API still exists, but is still not an acceptable solution for our UI deciders.]

Original source