CFileDialog - 选择过滤器和显示所有文件的“提示”

时间:2010-03-18 12:03:18

标签: windows winapi mfc openfiledialog

我有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;
...

1 个答案:

答案 0 :(得分:0)

我的经验是文件过滤器将控制文件列表中显示的内容,但是当您键入时,auto-complete将匹配当前目录中的所有内容。我无法想出一个证明它无法完成的好方法,但我没有在MFC文档或代码中看到任何可以让你这样做的东西。

您可以继承CFileDialog并覆盖CFileDialog :: OnFileNameOK()函数以拒绝任何与您的条件不匹配的文件名的输入。您可能还可以通过覆盖CFileDialog :: OnFileNameChange()来获取所需的功能,以便在单击打开(或保存)按钮之前拒绝用户提供的文件名,但我自己还没有完全知道它将如何锻炼。