MFC创建无失焦的无模式对话框

时间:2015-04-29 09:50:09

标签: c++ mfc

我想在MFC中创建一个对话框,一旦出现,就无法失去焦点。 这是为了阻止用户访问主SDI窗口,同时处理数据。流程类似于:

  1. 用户触发流程
  2. 应用程序显示对话框
  3. 应用程序启动流程功能
  4. 我无法使用“模态”对话框执行此操作,因为DoModal()函数在对话框关闭之前不会返回,因此这将永远不会触发第3步。

    如何做到这一点?

    修改

    这些是通知任务开始和任务结束的功能:

    void CmodguiApp::_notify_task_start() {
      _processing_dialog->DoModal();
    }
    
    void CmodguiApp::_notify_task_end() {
      _processing_dialog->EndDialog(1);
    }
    

    这是触发任务流程的代码:

    void trigger_task(std::function<void()> f) {
      CmodguiApp::_notify_task_start();
      f();
      CmodguiApp::_notify_task_end();
    }
    

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

  1. 致电

    _processing_dialog->DoModal();

  2. 在Process对话框类中,在适当的地方执行:

    AfxGetApp()->GetMainWnd()->SendMessage(WM_YOUR_USER_MESSAGE)

  3. 在主窗口类消息映射中,添加

    ON_MESSAGE(WM_YOUR_USER_MESSAGE, YourUserMessageHandlerFunction)

  4. 实施YourUserMessageHandlerFunction()。现在您已在主窗口重新开始处理。