VS2013中,建立MFC对话框,弹出的子窗口有时会在桌面,并没有在当前页面?
就是说点击父窗口后,弹出子窗口,按理说应该会在父窗口之上,确实也是这样,但有时候会出现,子窗口出现在桌面上并没有在最前页面???求大神指教原因何在?...
就是说点击父窗口后,弹出子窗口,按理说应该会在父窗口之上,确实也是这样,但有时候会出现,子窗口出现在桌面上并没有在最前页面???求大神指教原因何在?
展开
1个回答
展开全部
你没有写明白 是通过什么消息处理的弹出 子窗口,
这种情况 可能你弹出的子窗口是 非模态对话框..非模态对话框可以不输入焦点.
模态对话框 应该通过下面方式弹出
CDialog dlg;//定义一个对话框对象
dlg.DoModal();//弹出对话框
模态子对话框一旦弹出,父对话框就不能获得焦点,也没法切换, 直到 子对话框关闭.
非模态对话框应该通过下面方式弹出
CTestDlg *dlg=new CTestDlg;//new一个对象
dlg->Create(IDD_TEST_DLG,NULL);//创建
dlg->ShowWindow(SW_SHOW);//显示
模态子对话框的输入焦点可以跟父对话框切换.
这种情况 可能你弹出的子窗口是 非模态对话框..非模态对话框可以不输入焦点.
模态对话框 应该通过下面方式弹出
CDialog dlg;//定义一个对话框对象
dlg.DoModal();//弹出对话框
模态子对话框一旦弹出,父对话框就不能获得焦点,也没法切换, 直到 子对话框关闭.
非模态对话框应该通过下面方式弹出
CTestDlg *dlg=new CTestDlg;//new一个对象
dlg->Create(IDD_TEST_DLG,NULL);//创建
dlg->ShowWindow(SW_SHOW);//显示
模态子对话框的输入焦点可以跟父对话框切换.
追问
我是通过模态对话框弹出的。而且弹出后,要隐藏父窗口。
CGameDlog gameDlg;
this->ShowWindow(SW_HIDE);
UpdateData();
gameDlg.m_model = m_model;
gameDlg.DoModal();
this->ShowWindow(SW_NORMAL);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询