c++ - MFC创建不失去焦点的无模式对话框

标签 c++ mfc

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

  1. 用户触发流程
  2. 应用程序显示对话框
  3. 应用启动进程函数

我无法使用模态对话框执行此操作,因为 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. 调用

    _processing_dialog->DoModal();

  2. 在 Process 对话框类中的适当位置执行此操作:

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

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

    ON_MESSAGE(WM_YOUR_USER_MESSAGE,YourUserMessageHandlerFunction)

  4. 实现 YourUserMessageHandlerFunction()。现在您已经在主窗口重新进行处理。

关于c++ - MFC创建不失去焦点的无模式对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940137/

相关文章:

c++ - 如何链接 TextOut() 函数的库?

c++ - 是否可以在 CEdit 控件的纯数字输入模式和字母数字输入模式之间切换?

c++ - 逐行解析 CMemFile 中的文本

c++ - fflush(stdin) 的替代方案?

c++ - 无法从不同的类中检索结构内部的值(返回 0)

c++ - 从一行中解析整数

android - QT 快速获取最后已知位置

visual-studio-2010 - 将文本文件作为本地资源包含在 exe 中

c++ - 如何从剪贴板中查找所有文件的名称

c++ - 我可以在哪里定义 MFC 应用程序中的全局变量?