Открыть диалог с фильтром

Я использую C ++ и MFC. Мне нужно изменить Open File Dialog, поэтому только папки содержат * .txt файлы должны быть видимыми. Есть идеи?

0
nl ja de
Может быть новым кандидатом на HOS Open Open Dialog. ronaldbieber.de/Interface_Hall_of_Shame/file_dialog.html
добавлено автор selbie, источник
@Tim, к счастью, я не думаю, что это возможно при стандартном диалоговом окне файла.
добавлено автор Mark Ransom, источник
@selbie: Эта ссылка настолько полна неосведомленного мнения, что это даже не смешно. Однако я согласен с вами в том, что исходный вопрос требует внедрить функцию, которая не получила каких-либо соображений удобства использования. Итак, Олег, остановись прямо сейчас, прямо сейчас. Пожалуйста.
добавлено автор IInspectable, источник

2 ответы

У меня нет опыта программирования с MFC, но это мои сомнения.

Нет оснований для этого, особенно если вы собираетесь фильтровать папки на всех возможных уровнях. Только представьте, что пользователь открывает C: , и программа запускает сканирование всего диска. Было бы еще хуже, если этот диск подключен через сеть.

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

2
добавлено

Используйте GetOpenFileName и соответствующим образом установите член фильтра для экземпляра структуры OPENFILENAME.

char szFile[MAX_PATH];

OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "Text\0*.TXT\0";
ofn.nFilterIndex = 0;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

if (GetOpenFileName(&ofn)) ...
1
добавлено
Фильтр применяется только к текущему выбранному каталогу. Он не фильтрует каталоги на основе их содержимого. Таким образом, это не затрагивает вопрос.
добавлено автор IInspectable, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest