2

私はCFileDialogを持っていて、それにフィルターを設定しています(テキストファイル* .txt)。
開くと、TXT ファイルしか表示されません。しかし!ファイル名にテキストを入力すると、ヒント (ファイル名フィールドの下) にすべてのファイル (任意の拡張子を持つファイル) が表示されます。

この動作は、フラグによって変更できますか? TXT ファイルのみを表示する強制ヒントが必要です。

...
CFileDialog f(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_NOCHANGEDIR,_T("Text files (*.txt)|*.txt|All files (*.*)|*.*||"));
if( f.DoModal() != IDOK ) return;
...
4

1 に答える 1

0

これに関する私の経験では、ファイル フィルターはファイルのリストに表示されるものを制御しますが、オートコンプリートを入力すると、現在のディレクトリ内のすべてのものと一致します。それができないことを証明する良い方法は思いつきませんが、MFC のドキュメントやコードでそれを可能にするものは見たことがありません。

CFileDialog をサブクラス化し、CFileDialog::OnFileNameOK() 関数をオーバーライドして、条件に一致しないファイル名のエントリを拒否できます。CFileDialog::OnFileNameChange() をオーバーライドして、[開く] (または [保存]) ボタンをクリックする前にユーザーが指定したファイル名を拒否することで、必要な機能を取得することもできますが、それがどのようになるかを正確に知るために自分でそれを行っていません。いい結果。

于 2010-04-15T19:28:44.490 に答える