由于某些原因,需要两个界面线程。
其中一个是主要的界面线程A,另外一个是副界面线程B,弹出对话框,进行一些后台工作,但需要交互。
现象:B界面弹出后,A界面就没反应了,偶尔才反应一下。
原因:A偶尔反应是因为不断的销毁和创建B。
填坑:
启动B的代码是
CxxDlg dlg;
dlg.DoModal();
应该改为
CxxDlg dlg(CWnd::GetDesktopWindow());
dlg.DoModal();
因为DoModal的时候,会禁用父窗口。如果对话框没有父窗口,会默认设置为MainFrame。