这个问题我实在有点头晕,问题是这样的
mdi窗体下有A 和 B,C,D,E....不定数量的子窗体
1 其中A的Visible值为Ture,其它的子窗体的Visible值为不定
2 A在mdi里摆放的位置和其它子窗体不重叠,而其它子窗体是完全重叠且大小相同因为B,C,D,E...子窗体是完全重叠的,我想知道的是当最上面的被unload后,如果有其它的被遮住的,将会出现哪一个,怎么得出这个窗体的名字,如果下面没有了又会怎么样(开始我用的事Form_Paint事件,可是发现不能解决mdi窗口最小化后再还原的矛盾,所以这个方法可能行不通)
不知道我说清楚了没有

解决方案 »

  1.   

    用.Zorder属性,再判断其.visible是否为True
      

  2.   

    紧邻着要卸载的那个窗体的.zorder找出来,如果其.visible=True,那么这个窗体就是你需要的,如果.visible= false。再找下一个.zorder的窗体,再判断其.visible
      

  3.   


    If Me.ActiveForm Is Nothing then
      msgbox "当前MDI窗体中没有活动窗体!"
    Else
      msgbox Me.ActiveForm.Name '或者 msgbox Me.activeForm.Caption
    End If
      

  4.   

    to 楼上
    1 其中A的Visible值为Ture,其它的子窗体的Visible值为不定
    2 A在mdi里摆放的位置和其它子窗体不重叠,而其它子窗体是完全重叠且大小相同
    所以你们的方法好像不行 回复人: qingming81(晴明) ( ) 信誉:100  2003-07-11 13:29:00  得分:0 
     
     
      紧邻着要卸载的那个窗体的.zorder找出来,如果其.visible=True,那么这个窗体就是你需要的,如果.visible= false。再找下一个.zorder的窗体,再判断其.visible
      
     
    被某一子窗体(比如B)覆盖的子窗体可能有几个,当它被unload后,那么被它遮住的窗体的最上面一个会被显示(我想应该是这样),可是我怎么知道是哪一个窗体在最上面呢
    .zorder的用法我不太熟,可否详细告知(最近电脑出了问题,所有的chm都不能打开,所以也不能看msdn了)
      

  5.   

    没有什么特殊的用途,我就是想知道当一个子窗体被unload后,在被它遮住的窗体中哪一个是在最上层(以便做一起操作)
      

  6.   

    可以用 API:
    GetNextWindow(me.hwnd, GW_HWNDNEXT)

    GetWindow(hd, GW_HWNDNEXT)
    来获得当前窗口 z-order 下面的窗口句柄。
      

  7.   

    to 楼上
    1 其中A的Visible值为Ture,其它的子窗体的Visible值为不定
    2 A在mdi里摆放的位置和其它子窗体不重叠,而其它子窗体是完全重叠且大小相同
    所以你们的方法好像不行