【发布时间】:2023-03-20 10:32:01
【问题描述】:
我需要打开一个从同一个类实例化的对话框两次。当我尝试这个时
CdelmeDlg dlg;
dlg.DoModal();
dlg.DoModal();
第二次调用仅在瞬间打开对话框,然后关闭。我敢打赌,消息队列中有一条剩余消息,所以我在两次调用之间添加了这条消息
MSG msgCur;
while (::PeekMessage(&msgCur, NULL, NULL, NULL, PM_REMOVE))
;
这解决了问题,但感觉是一种错误的做法。有没有办法正确处理剩余的消息?
【问题讨论】:
-
这看起来很奇怪你到底想达到什么目的?
-
我需要让我的应用程序在没有 UI 的情况下运行,并在每次计时器用完时弹出此对话框。
-
你是如何关闭对话框的?
-
但是你为什么要调用 DoModal 两次?
-
为了隔离问题,我使用应用程序向导创建了一个空的基于对话框的应用程序。这将所有命令消息处理留给 MFC。如果我创建一个 OnBnClicked 方法,将其映射为处理按钮的点击消息并从那里调用 EndDialog(IDOK),也会发生同样的事情。
标签: mfc modal-dialog