mfc中,能否在父窗口进行计算任务时,弹出子窗口,当计算任务完成时,自动关闭子窗口
时间: 2024-10-22 22:14:35 浏览: 16
mfc实现点击一个窗口弹出另一个窗口
5星 · 资源好评率100%
在MFC(Microsoft Foundation Classes)中,是可以实现这种场景的。你可以创建一个包含计算任务的父窗口(如CDialog或CMDIFrame),并在这个父窗口中启动一个子窗口(例如CDialog-derived dialog)。当你开始计算任务时,可以使用`ShowModal()`函数让子窗口可见,并执行相应的计算逻辑。
在计算任务的后台线程或者异步处理中,你可以设置一个回调函数或者定时检查条件,在任务完成后,通过修改子窗口的状态或者发送消息给子窗口,让它更新自身并隐藏(通常使用`EndDialog()`或`Hide()`方法),然后关闭子窗口。记得在父窗口处理消息时检查是否有来自子窗口的消息,以便及时响应。
示例代码片段:
```cpp
// 父窗口类
class CParentWindow : public CMDIFrameWnd
{
public:
void StartCalculation();
private:
void OnCalculationFinished();
};
void CParentWindow::StartCalculation()
{
// 创建子窗口
CChildWindow childDlg;
// 启动计算并将结果回调给OnCalculationFinished
std::thread(calcThread, this, &CParentWindow::OnCalculationFinished);
}
void CParentWindow::OnCalculationFinished()
{
// 计算任务完成后,关闭子窗口
if (childDlg.IsWindow())
{
childDlg.EndDialog(WIN_ID_OK); // 或 childDlg.Hide();
}
}
```
阅读全文