在某些情況下我們需要某個(gè)窗體總是在所有窗體的最前端,我們可以使用Form1.show 1來實(shí)現(xiàn),但是這樣會(huì)出現(xiàn)一個(gè)問題,就是使整個(gè)程序暫停運(yùn)行,直到Unload Form1后程序才會(huì)繼續(xù)運(yùn)行.
那么如何使我的窗口總在最前?而不影響到我的整體程序運(yùn)行呢?
使用api函數(shù) SetWindowPos 可以很容易的作到。
SetWindowPos 就是完成設(shè)置窗口位置和狀態(tài)(pos=position)的功能。源代碼如下:
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_MOST& = -1
' 將窗口置于列表頂部,并位于任何最頂部窗口的前面
Private Const SWP_NOSIZE& = &H1
' 保持窗口大小
Private Const SWP_NOMOVE& = &H2
' 保持窗口位置
Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_MOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
' 將窗口設(shè)為在所有窗口前端
End Sub
那么如何使我的窗口總在最前?而不影響到我的整體程序運(yùn)行呢?
使用api函數(shù) SetWindowPos 可以很容易的作到。
SetWindowPos 就是完成設(shè)置窗口位置和狀態(tài)(pos=position)的功能。源代碼如下:
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_MOST& = -1
' 將窗口置于列表頂部,并位于任何最頂部窗口的前面
Private Const SWP_NOSIZE& = &H1
' 保持窗口大小
Private Const SWP_NOMOVE& = &H2
' 保持窗口位置
Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_MOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
' 將窗口設(shè)為在所有窗口前端
End Sub

