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 SWP_NOSIZE = &H1 Private Const SWP_NOMOVE = &H2 Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOMOVE SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOSIZE SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, HWND_TOPMOST
呵呵,楼上的可行,不过没必要调用3次SetWindowPos吧: Const HWND_TOPMOST = -1 Const HWND_NOTOPMOST = -2 Const SWP_NOSIZE = &H1 Const SWP_NOMOVE = &H2 Const SWP_NOACTIVATE = &H10 Const SWP_SHOWWINDOW = &H40 Private Declare Sub 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)Private Sub Form_Activate() 'Set the window position to topmost SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE End Sub
不用这么麻烦吧,假设要Form1始终在前 Form1.show ,Me
Declare Function SetWindowPos Lib"user"(Byval h%,Byval hb%,Byval x%,Byval y%,By val cx%,Byval cy%,Byval f%)As Integer Global Const SWP_NOMOVE=2 Global Const SWP_NOSIZE=1 Global Const HWND_TOPMOST= 1 Global Const HWND_NOTOPMOST=2 Global Const FLAGS=SWP_NOMOVE Or SWP_NOSIZE (2)假设要把窗体frmExample设置成总在最前面的窗口,只要在frmExample窗体的Form_Load过程里加入以下代码:Dim success% success=SetWindowPos(frmExample.hWnd,HWND_TOPMOST,0,0,0,0,FLAGS) 如果要取消总在最前面的特性,则可以执行如下的代码:success=SetWindowPos(frmExample.hWnd,HWND_NOTOPMOST,0,0,0,0,FLAGS)success不等于0表示SetWindowPos执行成功。
另一种方法是用setwindowlong修改窗口风格,为其附加WS_EX_TOPMOST风格
感动ing,还是VB版比较温暖啊,这么多人这么快回复,rainstormmaster(暴风雨 v2.0)和bbhere(阿忠(baby,i'll be just here waiting for you)) 兄都写的对,但rainstormmaster的答案最好(怎么好法,自己试一下就知道了),因此给他的分多点。派分了,谢谢!
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOMOVE
SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOSIZE
SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, HWND_TOPMOST
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub 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)Private Sub Form_Activate()
'Set the window position to topmost
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
Form1.show ,Me