我有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;
...
答案 0 :(得分:0)
我的经验是文件过滤器将控制文件列表中显示的内容,但是当您键入时,auto-complete将匹配当前目录中的所有内容。我无法想出一个证明它无法完成的好方法,但我没有在MFC文档或代码中看到任何可以让你这样做的东西。
您可以继承CFileDialog并覆盖CFileDialog :: OnFileNameOK()函数以拒绝任何与您的条件不匹配的文件名的输入。您可能还可以通过覆盖CFileDialog :: OnFileNameChange()来获取所需的功能,以便在单击打开(或保存)按钮之前拒绝用户提供的文件名,但我自己还没有完全知道它将如何锻炼。