【问题标题】:MFC application gui hangs when some data processing某些数据处理时 MFC 应用程序 gui 挂起
【发布时间】:2015-05-20 11:43:45
【问题描述】:

我有带有 GUI 的应用程序,但是当我单击实际上可以完成所有工作的按钮时,它会挂起。如何使其正常运行并“在线”显示 gui 更改?

【问题讨论】:

  • 将处理卸载到工作线程。您的 GUI 代码是单线程的(无论如何我希望如此)。
  • 那么它将如何更新一些主窗口信息?
  • 线程间通信。这两个问题的答案都超出了本网站所能想象的详细程度。

标签: user-interface mfc


【解决方案1】:

如果您不想使用后台线程并且它是某种循环需要很长时间,您可以将此成员函数添加到您的 UI 代码中并在循环中调用它:

void CMyDlg::PumpMessages()
{
    // Must call Create() before using the dialog
    ASSERT(m_hWnd!=NULL);

    MSG msg;
    // Handle dialog messages
    while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
      if(!IsDialogMessage(&msg))
      {
        TranslateMessage(&msg);
        DispatchMessage(&msg);  
      }
    }
}

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2020-05-01
    • 2013-04-22
    • 1970-01-01
    相关资源
    最近更新 更多