我需要打开一个从同一个类实例化两次的对话框.当我试试这个
CdelmeDlg dlg;
dlg.DoModal();
dlg.DoModal();
Run Code Online (Sandbox Code Playgroud)
第二个调用仅在一瞬间打开对话框,然后关闭.我的赌注是消息队列中有剩余的消息,所以我在调用之间添加了这个消息
MSG msgCur;
while (::PeekMessage(&msgCur, NULL, NULL, NULL, PM_REMOVE))
;
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题,但感觉这是一种错误的事情.有没有办法正确处理剩余的消息?
不要调用 EndDialog( IDOK );
要处理按下的“确定”或“取消”按钮,只需继承 OnOk 或 OnCancel ...否则 EndDialog 将被调用两次,您将遇到所遇到的问题!