我想在 MFC 中创建一个对话框,一旦出现,它就不会失去焦点。 这是为了在处理数据时阻止用户访问主 SDI 窗口。流程类似于:
- 用户触发流程
- 应用程序显示对话框
- 应用启动进程函数
我无法使用模态对话框执行此操作,因为 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();
}
最佳答案
尝试以下方法:
调用
_processing_dialog->DoModal();
在 Process 对话框类中的适当位置执行此操作:
AfxGetApp()->GetMainWnd()->SendMessage(WM_YOUR_USER_MESSAGE)
在主窗口类消息映射上,添加
ON_MESSAGE(WM_YOUR_USER_MESSAGE,YourUserMessageHandlerFunction)
实现
YourUserMessageHandlerFunction()
。现在您已经在主窗口重新进行处理。
关于c++ - MFC创建不失去焦点的无模式对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940137/