Я пытаюсь вызвать CFileDialog, чтобы пользователь мог выбрать файл.CFileDialog замерзает при запуске с помощью диалогового окна Modeless
Моя программа - приложение MFC, и я использую VS2005.
Вот моя проблема:
У меня есть основной вид, который создает диалоговое окно немодального. В этом диалоговом окне у меня есть пункт меню, что делает простой CFileDialog вызов:
CFileDialog dlgFile(true);
dlgFile.DoModal();
Но программа всегда висит на DoModal. Программа не отвечает на команды, а диспетчер задач говорит, что она перестала отвечать на запросы.
Другие интересные фрагменты информации:
- Это наблюдалась только на Windows 8, Windows 7 машин, как представляется, не влияет.
- Я создал новый проект с той же базовой схемой View-> modess dialog-> CFileDialog, и он работал отлично.
- Когда я звоню в MessageBox, он появляется за диалоговым окном (мне нужно нажать alt, чтобы получить его вверх), но программа по-прежнему реагирует.
- Если я делаю тот же вызов CFileDialog в основном представлении, он появляется без каких-либо проблем.
- Еще одна неприятная проблема, которая может быть связана или не связана с этим: когда работает вызов CFileDialog (в Win 7), при выборе «компьютер» в окне просмотра отображается пустой белый экран (все остальное отлично работает).
Ближайшие вопросы, которые я мог бы найти это: Why does CFileDialog::DoModal() Hang? Однако, я не использую темы (по крайней мере я 95% уверен, что нет, это не только мой проект). Является ли мой проект автоматическим потоком? Если да, то как я могу убедиться, что это не вызывает у меня проблем?
Я пробовал это в Windows 8 и не видел проблемы. Вы должны показать больше кода, чтобы воспроизвести проблему. 'dlgFile' должен иметь больше аргументов и т. д. –
@BarmakShemirani Да, я бы хотел, но это все, что нужно, кода больше нет. У меня буквально есть функция, в которой есть только две строки кода. Я тоже не могу воспроизвести его. Как я уже упоминал, я сделал новый проект в Windows 8 с той же базовой настройкой, и он работал нормально. Это происходит только с этим проектом. –
Создайте свой CFileDialog, передавая родительское окно вашего немодального окна. Посмотрите на [конструктор] (https://msdn.microsoft.com/en-us/library/wh5hz49d%28v=vs.100%29.aspx). Имеется параметр 'CWnd * pParentWnd = NULL', который вы может установить – cha