要求其他窗口都在这个窗口之上(Z-ORDER),也就是说主窗口在该进行所有其他窗口之下。
以前是将其他窗口(非主窗口)置顶的方式,这样其他程序创建的窗口也被盖住了,结果用户认为不太友好,哪位高手知道怎么做?

解决方案 »

  1.   

    Application第一个创建的窗体被默认为主窗体。
    Application.CreateForm();
      

  2.   


    但是不能指定z-order关系,也就是说主窗口也可以盖住后来创建的窗口。
    用户希望主窗口永远位于最下面。
      

  3.   

    主窗口相当于一个导航窗口,子窗口一直使用非模态窗口,这样如果子窗口最小化,主窗口还可以操作,还可以创建新的子窗口。
    我也试过 子窗口 Formstyle:=fsStayOnTop,这样基本符合了,但是有时切换到其他程序时,子窗口仍然还在桌面最顶(相当于置顶了),不够友好。
      

  4.   


    刚刚试了一下,MFC创建的非模态窗口就有这种特性:子窗口永远位于主窗口上面。
      

  5.   

    一般是 自己 控制 ,比如最大化时 ,处理成 类似 MDI的效果 ,采用 tablist管理窗口 
      

  6.   

    能够具体点吗?
    tablist是什么?
      

  7.   

    子窗口设置父窗口为主窗口,然后子窗口Show,这样子窗口和父窗口都可以操作,具体代码:
    Windows.SetParent(FmChild.Handle, FmMian.Handle)或者用DELPHI VCL的容器做,代码:FmChild.Parent := FmMain;
      

  8.   

    将窗体设为 HWND_BOTTOM,不过这样会使主窗体位于所有窗体(包括其它程序的窗体)之下。
    不知是否符合你的要求?
      

  9.   

    这个虽然z-order是可以了,但是子窗口看来其只能呆在父窗口的客户区,效果与MDI基本没什么不同。
    还是想弄清楚MFC非模态框到底是怎么回事?
      

  10.   

    1、主 窗口 放 一个 pagecontrol,但不利用它做容器 ,而是利用它的 tabs且pagecontrol高度设为tab标题所需高度即可。
    2、当 程序开一个窗体 时,则增加一个tab,并把这个tab的标题设置 为 form的 标题。
    3、对每个子窗体,在其最大化时,控制不要满屏;也是最大化时,窗体的top设为pagecontrol的top+pagecontrol.heigth;同理设定width及height;这样整个程序看起来像mdi,而当窗体在非最大化时,又可以随意在桌面移动,不会局限在窗体内,只是需要多一些控制...
      

  11.   

    把主窗体设置为最大化,其他的窗体范围设置下些,这样看起来就有点像MDI
      

  12.   

    痛苦,为什么就不能做得与MFC一样?他们都是windows窗口啊,一定有什么地方没设置好!
      

  13.   

    MFC不了解,可能是MFC和delphi的窗口管理方式不同,比如窗口的windowstyle, 窗口ParentHandle不同,效果就不一样
      

  14.   

    还有就是所谓的Mainform定义,可能也不同