下面是窗口最上層顯示,和取消最上層顯示的代碼。我現在遇到的問題是,我要讓form1窗體是活動窗體的時候,form2在最上層,而其它窗體是活動窗體的時候,form2不是在最上層的。應該怎樣運用下面的代碼呢。各位幫我想想辦法。
         Const SWP_NOSIZE = &H1 
         Const SWP_NOMOVE = &H2 
         Const SWP_NOACTIVATE = &H10 
         Const HWND_TOPMOST = -1 
         Const HWND_NOTOPMOST = -2 
         Const SWP_SHOWWINDOW = &H40 
         Private Declare Function SetWindowPos Lib _ 
          "user32" Alias "SetWindowPos" (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 
         使窗口Always On Top时,可以用下面的语句: 
         SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _ 
          SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _ 
         Or SWP_NOSIZE 
         使窗口取消Always On Top功能,用下面的语句: 
         SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _ 
          SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _ 
         Or SWP_NOSIZE 
     此问题由李海回答。 

解决方案 »

  1.   

    form1激活时:
    Private Sub Form1_Activate()
      SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _ 
              SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _ 
             Or SWP_NOSIZE End Subform1失去焦点时:Private Sub Form_Deactivate()
    SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _ 
              SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _ 
             Or SWP_NOSIZE End Sub其他放在model里面
      

  2.   

    謝謝,只是這樣有一個問題,就是當我開啟其它窗口裡,form2仍在最上層,只有在我點擊一下剛開啟的窗口時,form2才不會在最上層。
    而我需要當開啟其它窗口時,此開啟的窗口就在最上層,form2不為最上層。
    這個應該如何做呢
      

  3.   

    不對有另外一個方法
    Private Const SWP_NOSIZE = &H1                                       '維持當前尺寸
    Private Const SWP_NOMOVE = &H2                                       '維持當前位置
    Private Const SWP_NOACTIVATE = &H10                                  '不擊活窗體
    Private Const SWP_SHOWWINDOW = &H40                                  '顯示窗口
    Private Const HWND_TOP = 0                                           '窗口置頂
    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 Sub Form_Activate()
    SetWindowPos form2.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
    end sub只是這個種,我怎麼也關閉不掉form2