Странное поведение с модальными диалогами MFC - PullRequest
0 голосов
/ 18 ноября 2011

Я только что заметил, что все модальные диалоговые окна в моей программе имеют странное поведение,

Код остановит и вызов dlg.DoModal (), но окно под ним все еще будет активным и будет принимать входные данные.Это происходит со всеми моими производными от CDialog окнами (это на самом деле CBCGPDialog) и системным окном сообщений, файловым диалогом и т. Д.

Единственный вывод, который я получил, заключается в том, что должен быть какой-то насос сообщений, который обрабатывает сообщения окна, даже если он не должен.

Это случилось с кем-то еще?И есть идеи, как ее решить?

Принимая входные данные, я имею в виду, что они по-прежнему отзывчивы.

Например, если у меня есть кнопка «Добавить», которая открывает модальное диалоговое окно после показа диалога, явсе еще может нажать ту же кнопку, чтобы показать еще одну.

РЕДАКТИРОВАТЬ.

Я нашел ошибку.

В битовой маске, переданной в LoadFrame (для мэйнфрейма), произошла ошибка.

Я не знаю, что такое ведьма, но один из них отключит некоторый механизм, чтобы заставить окно диалога работать

1 Ответ

0 голосов
/ 18 ноября 2011

CDialog::DoModal делает пару вещей. Сначала он отключает родительское окно диалога, чтобы он больше не отвечал на события, затем он делает то же самое с главным окном, полученным через AfxGetMainWnd(). Он запускает собственный насос сообщений с RunModalLoop().

...