2009-10-26 18 views
5

Vistaでは、IFileSaveDialogを使用して、ユーザーが「別名で保存」フォルダを選択できるようにしています。ユーザーはイメージのフォルダをエクスポートして、新しい、または既存のターゲットフォルダを選択する必要があります。IFileSaveDialog - Windows 7のフォルダの選択

簡単に言えば、コードは次のようになります。Windows 7では

IFileSaveDialog* dialog; // created 
dialog->SetOptions(FOS_PICKFOLDERS); 
dialog->Show(NULL); 
dialog->GetResult(&shellItem) 

FOS_PICKFOLDERSオプションが禁止されていると(とthe APIでそのようにマークされている)が表示されます。 SetOptionsコールの戻り値はE_INVALIDARGです。 IFileOpenDialogを使用する場合、フォルダオプションを設定することはできますが、存在しないフォルダを選択するとエラーが表示されます。

新しいIFileDialogを「フォルダを保存」ダイアログとして機能させる別の方法はありますか?

[いくつかのコメントをオフヘッドに、SHBrowseForFolder APIはまだ存在しているが、それでも私たちのUI決定器のために受け入れ可能な解決策ではありません。]

+0

うわー、Windowsチームは4月にブログのサンプルにこのフラグを使用しました! http://windowsteamblog.com/blogs/developers/archive/2009/04/16/light-up-with-windows-7-libraries.aspx –

+0

kazoobrewerからのコメントは、もはや機能しないと伝えています。私はそれはあなたのことだと思う... –

+2

時々、あなたは野生のAPIを使用している唯一の開発者だと感じる... –

答えて

4

この理由は、マニュアルに記載されています:

FOS_PICKFOLDERSを:フォルダではなくファイルの選択を提供して、[開く]ダイアログを提示します。

「保存」にFOS_PICKFOLDERSを使用することは決してサポートされていなかったが、Vistaはそれを強制しなかった。代わりにIFileOpenDialogを使用して、あなたは良いです。 既存のフォルダを選択しています(作成するフォルダを指定していないため)、常に正しい選択が行われています。

2

私はまだWindows 7のダイアログで遊んが、ダウンロードしていませんWindows® API Code Packちょうど今朝私が取り組んでいるアプリケーションでサムネイルツールバーとアイコンオーバーレイを実装しています。おそらく正しい方向に向けるでしょう。

関連する問題