CFileDialog - Выбранный фильтр и подсказка, показывающая все файлы - PullRequest
2 голосов
/ 18 марта 2010

У меня есть 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 голосов
/ 15 апреля 2010

Мой опыт показывает, что фильтр файлов будет контролировать то, что отображается в списке файлов, но при вводе команды автозаполнение сопоставляется со всем в текущем каталоге. Я не могу придумать хороший способ доказать, что это невозможно, но я не видел ничего в документах или коде MFC, которые позволили бы вам это сделать.

Вы можете создать подкласс CFileDialog и переопределить функцию CFileDialog :: OnFileNameOK (), чтобы отклонить запись любого имени файла, которое не соответствует вашим критериям. Вы также можете получить желаемую функциональность, переопределив CFileDialog :: OnFileNameChange (), чтобы отклонить предоставленное пользователем имя файла, прежде чем они нажмут кнопку «Открыть» (или «Сохранить»), но я сам не сделал этого, чтобы точно знать, как это произойдет потренироваться.

...