2010-03-18 87 views
2

我有CFileDialog併爲其設置過濾器(文本文件* .txt)。
打開時,我只看到TXT文件,這就對了。但!當我在文件名中輸入文本時,提示(在文件名字段下)顯示所有文件(具有任何擴展名的文件)。

可以通過某些標誌改變這種行爲嗎?我想強制提示只顯示TXT文件。CFileDialog - 選擇過濾器和「提示」顯示所有文件

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

發表一些代碼。 – 2010-03-18 12:13:50

回答

0

我這方面的經驗是,文件過濾器將控制什麼是文件列表中顯示,但是當你輸入的自動完成功能對在當前目錄中的一切配套。我想不出一個好辦法來證明它不能完成,但我沒有看到任何可以讓你這樣做的MFC文檔或代碼。

您可以繼承CFileDialog並覆蓋CFileDialog :: OnFileNameOK()函數以拒絕與您的條件不匹配的任何文件名的條目。你也許可以通過覆蓋CFileDialog :: OnFileNameChange()在用戶提供的文件名之前單擊打開(或保存)按鈕來獲得所需的功能,但是我自己並沒有這樣做來確切知道它是如何實現的鍛鍊。