我在网上看到文章,这样可以把窗口置于窗口列表的顶部。
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 LongConst HWND_TOPMOST = -1Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, Me.Left / Screen.TwipsPerPixelX, Me.Top \ Screen.TwipsPerPixelY, Me.Width \ Screen.TwipsPerPixelX, Me.Height \ Screen.TwipsPerPixelY, 0
End Sub但是如何才能使窗口“永远”置于窗口列表的底部呢?该API的说明这样可以,但是运行起来确不是,这是未什么?Const HWND_BOTTOM = 1SetWindowPos Me.hwnd, HWND_BOTTOM, Me.Left / Screen.TwipsPerPixelX, Me.Top \ Screen.TwipsPerPixelY, Me.Width \ Screen.TwipsPerPixelX, Me.Height \ Screen.TwipsPerPixelY, 0

解决方案 »

  1.   

    可以用ZOrder方法来实现;form.ZOrder 0是将窗口置于顶端
    form.ZOrder 1是置于底端
      

  2.   

    可以用ZOrder方法来实现;form.ZOrder 0是将窗口置于顶端
    form.ZOrder 1是置于底端
      

  3.   

    SetWindowPos hForm.hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or _SWP_SHOWWINDOW Or SWP_NOACTIVATE
      

  4.   

    Private Sub Form_Load()
        Dim hDesk As Long, hDeskContainer As Long
        
        hDesk = FindWindow("PROGMAN", 0&)
        hDeskContainer = GetWindow(hDesk, GW_CHILD)
        
        SetParent Me.hwnd, hDeskContainer
    End SubAPI的声明不再赘述,只是注意修改一下FindWindow的形参声明为Byval String, Byval Long即可这种方法绝对有效,只是有点小小的副作用