6d电影和4d:VB中如何实现一个窗体始终处于最上方

来源:百度文库 编辑:高校问答 时间:2024/04/28 22:22:12
VB中如何实现一个窗体始终处于最上方,即始终为活动的
要方法越简单越好!
回答请详细点

要用 API 函数。
SetWindowPos

'示例:
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_TOPMOST& = -1
' 将窗口置于列表顶部,并位于任何最顶部窗口的前面
Private Const SWP_NOSIZE& = &H1
' 保持窗口大小
Private Const SWP_NOMOVE& = &H2
' 保持窗口位置

Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
' 将窗口设为总在最前
End Sub

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

Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H8

Sub SetFormTopmost(TheForm As Form)

SetWindowPos TheForm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE

End Sub

Sub Form_Load()

SetFormTopmost Me ''只需要改动这里,ME换成你想放在最前的窗体名

End Sub

“始终处于最上方”和“始终为活动的”是两码事。
前者,可以用API来设置(.net的话设个属性就成),后者的话那就要以模态方式打开,也就是上面学而不思则网 说的。

frmAbout.Show 1 '调用About窗体(模式)

form1.top=0
form1.lift=0