IFileSaveDialog-Windows 7でフォルダーを選択する
-
06-07-2019 - |
質問
Vistaでは、 IFileSaveDialog
を使用して、ユーザーが" save-as"を選択できるようにしました。フォルダ。たとえば、ユーザーは画像のフォルダーをエクスポートし、新規または既存のターゲットフォルダーを選択する必要があります。
簡単に、コードは次のようになります:
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:ファイルではなくフォルダの選択を提供する[開く]ダイアログを表示します。
" Save"でのFOS_PICKFOLDERSの使用サポートされることはありませんでしたが、Vistaはそれを強制しませんでした。代わりにIFileOpenDialogを使用すると、準備完了です。 既存のフォルダーを選択している(作成するフォルダーを指定していない)ため、常に正しい選択でした。
他のヒント
Windows 7のダイアログをまだ試していませんが、 Windows®をダウンロードしました。 APIコードパック。今朝、作業中のアプリケーションにサムネイルツールバーとアイコンオーバーレイを実装しています。おそらく正しい方向を指し示すでしょう。