模态对话框被非模态对话框覆盖了
在一个主窗体里面生成了4个非模态对话框,分别显示不同的数据;然后我在主窗体右键再生成一个配置的对话框(模态);这时我本想只让这个模态对话框有效;但实际上我点击那4个非模态...
在一个主窗体里面生成了4个非模态对话框,分别显示不同的数据;然后我在主窗体右键再生成一个配置的对话框(模态);这时我本想只让这个模态对话框有效;但实际上我点击那4个非模态对话框,会覆盖这个模态对话框;请问怎么解决实现;
展开
1个回答
展开全部
当采用MFC建立非模态对话框时,如果只提供非模态对话框的资源ID而不指定非模态对话框的父窗口时,MFC会默认其父窗口为主应用窗口。如果主应用窗口仍是一个对话框的话,会出现刚创建的非模态对话框一直覆盖它的父对话框。创建代码如下:
CDlgShowAllPic m_ShowAllPic;
if(!m_ShowAllPic.m_hWnd)
m_ShowAllPic.Create(IDD_SW_ALLPIC);
m_ShowAllPic.ShowWindow(SW_SHOW);
如果想要刚创建的对话框可以被覆盖,则需要改变其默认的父窗口,使其和已存在的对话框是兄弟关系,便可实现被原有对话框覆盖。修改代码如下:
CDlgShowAllPic m_ShowAllPic;
if(!m_ShowAllPic.m_hWnd)
m_ShowAllPic.Create(IDD_SW_ALLPIC,this->GetDesktopWindow());
m_ShowAllPic.ShowWindow(SW_SHOW);
第三行代码指定了,创建的非模态对话框其父窗口为桌面,这样可以避免其与已存在的对话框成为父子关系。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询