模态对话框被非模态对话框覆盖了

在一个主窗体里面生成了4个非模态对话框,分别显示不同的数据;然后我在主窗体右键再生成一个配置的对话框(模态);这时我本想只让这个模态对话框有效;但实际上我点击那4个非模态... 在一个主窗体里面生成了4个非模态对话框,分别显示不同的数据;然后我在主窗体右键再生成一个配置的对话框(模态);这时我本想只让这个模态对话框有效;但实际上我点击那4个非模态对话框,会覆盖这个模态对话框;请问怎么解决实现; 展开
 我来答
Mexico卡卡
2017-09-15 · TA获得超过1万个赞
知道大有可为答主
回答量:1.3万
采纳率:98%
帮助的人:1881万
展开全部

当采用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);

第三行代码指定了,创建的非模态对话框其父窗口为桌面,这样可以避免其与已存在的对话框成为父子关系。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式