1

新しい Windows バージョンでは (少なくとも Windows 7 ではそうですが、Vista でも発生すると信じるに足る理由があります) IFileDialog(したがってIFileOpenDialog、およびIFileSaveDialog) ファイル タイプの説明にワイルドカード パターンが見つからない場合は、ワイルドカード パターンが自動的に追加されます。

これは、ガイドラインの一貫性と施行を強化しながら、使用を容易にする優れた機能です。しかし、それが望ましくない場合もあります。受け入れられた拡張子が多数ある場合 (「すべての画像」など)、対応するコンボボックスのエントリが長すぎます。最悪のことは、これが文書化されておらず、 CodeProject の記事でそれに関するメモ (私の観察結果の確認) しか見つけられなかったことです。

Windows 7 では、下位互換性チェック ( CodeProject の記事で言及されているように) はそれほど強力ではなく、説明に手動でパターンを追加すると自動追加が妨げられるようです。これは、別の質問への回答ですでに指摘されています。しかし、このソリューションは理想とはほど遠いものです。(以前の質問はタグ付けと説明が不十分だったと思われるため、同じ質問を再度行うことにしました: (1) StackOverflow によって提案された同様の質問を見て最初に見つけました。Google での以前のクエリでは見つかりませんでした。(2) )問題は一般的なものであり、Delphi に限定されません。)

これを防ぐ方法は?

IFileDialogそれが提供するカスタマイズが必要なため、使用する必要があることに注意してください。GetOpenFileName(したがって、 andによって生成されるダイアログへの切り替えGetSaveFileNameはオプションではありません。)

4

1 に答える 1

0

まあ、MSDN は IFileDialog について言及しています。SetFilterは Windows 7 では非推奨です。その場合、IFileDialog を使用する必要があると思います。ファイル拡張子のパターンを設定するには、SetFileTypesを使用します。ワイルドカード拡張機能が既に存在するとおっしゃっているように、答えは、これら 2 つの関数のいずれかを使用して拡張パターンを上書きすることです。

言語タグがないため、サンプル コードはありません。ただし、SetFileTypes へのリンクはかなり良い例を示しています。

于 2011-05-22T21:20:02.677 に答える