MFC模态对话框的奇怪行为

时间:2011-11-18 17:57:55

标签: c++ mfc dialog modal-dialog

我刚注意到程序中的所有模态对话框都有一个奇怪的行为,

代码将停止广告dlg.DoModal()调用,但它下面的窗口仍然处于活动状态并接受输入。 这发生在我的所有CDialog派生窗口(它实际上是CBCGPDialog)和系统消息框,文件对话框等。

我得到的唯一结论是必须有一些消息泵处理窗口消息,即使它不应该。

这是否发生在其他人身上?以及如何解决它的任何想法?

接受输入意味着他们仍然有回应。

例如,如果我有一个添加按钮,在显示对话框后打开一个模态对话框,我仍然可以点击相同的按钮来显示另一个。

EDIT。

我发现了错误。

在LoadFrame上传递的位掩码中存在一些错误(对于大型机)。

我不知道女巫位,但其中一个会禁用一些meccanism使对话窗口工作

1 个答案:

答案 0 :(得分:0)

CDialog::DoModal做了两件事。首先,它禁用对话框的父窗口,使其不再响应事件,然后对通过AfxGetMainWnd()获得的主窗口执行相同操作。它使用RunModalLoop()运行自己的消息泵。