Option Explicit
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_NOTTOPMOST = -1
Private Const SWP_NOACTIVATE = &H40
Private Sub Form_Load()
    
    Dim retValue As Long
    retValue = SetWindowPos(Me.hWnd, HWND_NOTTOPMOST, Me.CurrentX, Me.CurrentY + 2000, 300, 300, SWP_NOACTIVATE)
    Me.Top = 1400
    Me.Left = 80
    Me.Height = 9000 - 2190
    
End Sub
注:将这段代码放到mdi中,其中API的声明要写在一行。

解决方案 »

  1.   

    楼上没有搞清我的问题,不是要MDI窗口总在最上,是在MDI中有很多子窗口,我需要将一个子窗口设为总在其它子窗口的上面,在这个子窗口模块中用SetWindowPos不行,只有把该窗口的MDIChild设为False时才起作用,可是这样的话这个窗口就是不这个MDI的子窗口了,而是一个单独的窗口了。怎么才能在保证其为子窗口的前提下还能让它保持在其它窗口之上,不会被其它的子窗口覆盖。
      

  2.   

    呵呵,不知道这样合不合要求:子窗体都有一个事件:Deactivate,这个事件是当某个子窗体变为非活动窗体时发生,你在这个事件里写上这么一句:Me.SetFocus,试试看效果。
      

  3.   

    啊啊,不对,我想错了,这样一来别的窗体没办法接到焦点了,Sorry
      

  4.   

    将MDI移出父窗体Option Explicit
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long    Dim frmMDI As Form1
        Dim LngBack As Long
    Private Sub mnuCreatefrm_Click()
        Set frmMDI = New Form1
        FrmMDI.Show
    End SubPrivate Sub MoveTo_Click()
        LngBack = SetParent(frmMDI.hWnd, 0)
    End SubPrivate Sub MoveIn_Click()
        SetParent FrmMDI.hWnd, LngBack
        LngBack.Move 0, 0
    End Sub
           以上代码来自: SourceCode Explorer(源代码数据库)
               复制时间: 2002-08-11 01:16:10
               当前版本: 1.0.724
               软件作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729`