MFC对话框失去焦点时会冻结

时间:2012-04-17 12:12:02

标签: c++ windows multithreading mfc

我是MFC的新手所以请耐心等待。我有一个双屏幕显示器全屏显示的对话框。此对话框在另一个非模态对话框中实例化(单击按钮时)。类似的东西:

void MyCParentDlg::OnBnClickedButton1()
{
        dlg2 = new MyChildNonModalDlg();
        dlg2->ShowWindow(SW_SHOW);
}

OnInitDialog()的{​​{1}}中,调用MyChildNonModalDlg使其成为全屏对话框,无边框。现在,ShowWindow(SW_MAXIMIZE)中有一个按钮回调事件:

MyChildNonModalDlg

void MyChildNonModalDlg::onBnClickedBut2() { // Display images on the dialog one by one for a very long time } 正在运行并且对话框正在不断更新时,如果我在对话框外点击鼠标(比如在另一个屏幕上),则表示对话框失去焦点时,冻结!

我知道这可能是可以用多线程修复的,其中onBnClickedBut2内的进程必须在一个线程内运行,但是作为一个对线程知之甚少的人,有人可以指向我方向或提供可以做到这一点的代码示例?

1 个答案:

答案 0 :(得分:0)

使用AfxBeginThreadonBnClickedBut2内创建新主题。您不应该阻止UI事件处理程序。希望你现在得到它。