CFileDialog – select的filter和“提示”显示所有文件

我有CFileDialog并为其设置filter(Text files * .txt)。
当它打开时,我只看到TXT文件,这是正确的。 但! 当我将文本input文件名时,提示(在文件名字段下)显示所有文件(具有任何扩展名的文件)。

可以通过一些标志改变这种行为? 我想强制提示只显示TXT文件。

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

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

您可以继承CFileDialog并覆盖CFileDialog :: OnFileNameOK()函数以拒绝与条件不匹配的任何文件名的输入。 你也许可以通过覆盖CFileDialog :: OnFileNameChange()来获得你想要的功能来拒绝用户提供的文件名,然后他们点击打开(或保存)按钮,但我自己并没有这样做,以确切地知道它是如何锻炼。