怎样让一个MDI子窗体总是显示在所有子窗体的最上面??

解决方案 »

  1.   

    建立一个模块:
    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 LongPrivate Const HWND_TOPMOST = -1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOSIZE = &H1Public Function PutWindowOnTop(pFrm As Form)
       Call SetWindowPos(pFrm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    End FunctionPublic Function noPutWindowOnTop(pFrm As Form)
       Call SetWindowPos(pFrm.hwnd, -2, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    End Function在窗体事件中:
    Private Sub Form_Load()
       PutWindowOnTop Me
    end sub
      

  2.   

    楼上的,如果MDICHILD属性设置为TRUE好象就不行了吧
      

  3.   

    to gzludong72
      谢谢回复
      我试过好像不行。
      当以全屏打开另一个MDI子窗体时,它马上就被覆盖了
      

  4.   

    弄个非MDI子窗体,再用SetParent API试试看:)
      

  5.   

    如果让非MDI子窗体显示在最上面很简单,
    但如何实现让显示在最上面的子窗体不能失去选中状态(点击其它窗体无效且得不到焦点)??除非关闭它?
      

  6.   

    子窗体.ZOrder N,N越大越在上面.試試吧!
      

  7.   

    如果让非MDI子窗体显示在最上面很简单,
    但如何实现让显示在最上面的子窗体不能失去选中状态(点击其它窗体无效且得不到焦点)??除非关闭它?
    有人帮忙回答吗?
      

  8.   

    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
    Const HWND_TOPMOST = -1
    Const SWP_SHOWWINDOW = &H40'wFlags 的含意
    'SWP_DRAWFRAME 圍繞窗口畫一個框
    'SWP_HIDEWINDOW 隱藏窗口
    'SWP_NOACTIVATE 不激活窗口
    'SWP_NOMOVE 保持當前位置 (x和y設定將被忽略) &H2
    'SWP_NOREDRAW  窗口不自動重畫
    'SWP_NOSIZE 保持當前大小 (cx和cy設定將被忽略) &H1
    'SWP_NOZORDER 保持窗口在列表的?前位置 (hWndInsertAfter將被忽略)
    'SWP_SHOWWINDOW 顯示窗口 &H40
    'SWP_FRAMECHANGED 強迫一條WM_NCCALCSIZE消息進入窗口,即使窗口的大小沒有改變Private Sub Form_Load()
        Dim retValue As Integer
        retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW)
    End Sub
      

  9.   

    模式显示:
    MyForm.Show vbModal