hur.cn - 华软网

 热门搜索

对话框的覆盖

  作者:未知    来源:网络    更新时间:2011/6/25
 我现在又两个对话框A,B,A中点击按钮可出现B对话框,当我在选择A对话框时,想让A对话框显示在B对话框上面,同样选择B对话框时B在A上面,该怎么做?求解答。。。。。
---华软 网友回答---
A是主窗口吧,试一下将B的父窗口设置为桌面或NULL。

---华软网友回复---
非模态对话框就可以切换了
---华软网友回复---
两个对话框A,B,A中点击按钮可出现B对话框,当我在选择A对话框时,想让A对话框显示在B对话框上面,同样选择B对话框时B在A上面

怎么感觉本来就是这样的
---华软网友回复---
gz jf
---华软网友回复---
只要你创建对话框是不用Domodal,而用Create创建非模态对话框即可
---华软网友回复---
引用 3 楼 lslsyqyq 的回复:
两个对话框A,B,A中点击按钮可出现B对话框,当我在选择A对话框时,想让A对话框显示在B对话框上面,同样选择B对话框时B在A上面

怎么感觉本来就是这样的

可它本来不是这样的,我用的是MFC
---华软网友回复---
引用 2 楼 xiaoc1026 的回复:
非模态对话框就可以切换了

我用的是非模态对话框,但是它不能将选中的对话框至于另一个上面。。。。。
---华软网友回复---
引用 5 楼 for_onxx 的回复:
只要你创建对话框是不用Domodal,而用Create创建非模态对话框即可

 我用的是这样的代码
MyNewClass  *pDlg=new MyNewClass ;
 pDlg->Create(IDD_DIALOG1,this);
 pDlg->ShowWindow(SW_SHOW); 
是不是我用的是VS2010的原因,它是unicode编码。。。继续求解答!!!!
---华软网友回复---
vc6下你的代码没问题
---华软网友回复---
setforegroundwindow吧,
---华软网友回复---
试了试,你需要
m_dlgSub1.Create(IDD_DIALOG1,GetDesktopWindow());
NULL不可以
---华软网友回复---
引用 11 楼 simoreg 的回复:
试了试,你需要
m_dlgSub1.Create(IDD_DIALOG1,GetDesktopWindow());
NULL不可以
如果你的A是主窗口那你必须按11楼的方法做
否则B永远都在A上面
---华软网友回复---
引用 11 楼 simoreg 的回复:
试了试,你需要
m_dlgSub1.Create(IDD_DIALOG1,GetDesktopWindow());
NULL不可以

是可以的 谢谢啊 不过为什么这样就可以了啊??求解答!!!
---华软网友回复---
引用 12 楼 xianglitian 的回复:
引用 11 楼 simoreg 的回复:

试了试,你需要
m_dlgSub1.Create(IDD_DIALOG1,GetDesktopWindow());
NULL不可以
如果你的A是主窗口那你必须按11楼的方法做
否则B永远都在A上面

我已经试过了 是可以的 我看一下MSDN的create函数但是没看懂,能解释一下为什么那样可以吗?
---华软网友回复---
明白了 谢谢各位的帮助!
---华软网友回复---
大概是
  DesktopWindow是所有顶层窗口的父窗口,所有顶层窗口的排列顺序成为Z-Order
  这个顺序影响很多,但一点很明确,Z-Order影响显示的顺序
  
  同样的,对于每个顶层窗口的所有子窗口,都有一个Owner Z-Order,同样的,影响显示的顺序,但所有子窗口都在其父窗口上

  因此,如果要想达到你的目的,就只有将你的子窗口的parent设定为Desktop

注:子窗口不一定必须拥有WS_CHILD属性,不拥有这个属性的子窗口叫做Ownered window,相应的,其父应该叫做Owner
  

---华软网友回复---
引用 16 楼 simoreg 的回复:
大概是
  DesktopWindow是所有顶层窗口的父窗口,所有顶层窗口的排列顺序成为Z-Order
  这个顺序影响很多,但一点很明确,Z-Order影响显示的顺序
  
  同样的,对于每个顶层窗口的所有子窗口,都有一个Owner Z-Order,同样的,影响显示的顺序,但所有子窗口都在其父窗口上

  因此,如果要想达到你的目的,就只有将你的子窗口的parent设定为Deskt……

谢谢。。。。。。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。