我想在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();
}
答案 0 :(得分:1)
尝试以下方法:
致电
_processing_dialog->DoModal();
在Process对话框类中,在适当的地方执行:
AfxGetApp()->GetMainWnd()->SendMessage(WM_YOUR_USER_MESSAGE)
在主窗口类消息映射中,添加
ON_MESSAGE(WM_YOUR_USER_MESSAGE, YourUserMessageHandlerFunction)
实施YourUserMessageHandlerFunction()
。现在您已在主窗口重新开始处理。