MFC模态对话框的怪异行为



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

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

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

这件事发生在别人身上了吗?知道怎么解决吗?

接受输入意味着它们仍然是有响应的。

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

编辑。

我发现了错误。

在LoadFrame(主机)传递的位掩码中有一些错误。

我不知道是哪位,但其中一个会禁用一些机制,使对话框窗口工作

CDialog::DoModal做了几件事。首先,它禁用对话框的父窗口,因此它将不再响应事件,然后它对通过AfxGetMainWnd()获得的主窗口做同样的事情。使用RunModalLoop()运行自己的消息泵

最新更新