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 回答