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 Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const WM_GETMINMAXINFO = &H24Private Sub SetWindowOnTop(frmIn As Form)
SetWindowPos frmIn.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End SubPrivate Sub Form_Activate()
SetWindowOnTop Me
End Sub
Private Const SWP_NOSIZE = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const WM_GETMINMAXINFO = &H24Private Sub SetWindowOnTop(frmIn As Form)
SetWindowPos frmIn.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End SubPrivate Sub Form_Activate()
SetWindowOnTop Me
End Sub
解决方案 »
- 急!!_100分相送!!!水晶报表做到由客户选择要显示的字段进行自定义显示的问题
- 向高手求援呀!!! (不好意思,只剩下10分了)
- 关于学生选课系统在VB中无法编译通过的问题
- 我先裝了vb 6 ,然後安裝了.net,結果vb 6 出錯時會自動調用.net調試,怎樣讓他只用vb 6 調試阿?
- 请教关于时序的问题。
- 窗体属性BorderStyle = 0时,如何在窗体右下脚控制窗体大小?
- 如何调用vc作的动态连接库
- 暑假来了,大家一起做个大软件!
- asc转汉字问题
- 调c的dll!
- 菜问题:如何用较快的速度获得当前目录下所有某一类型的文件(比如*.bmp),并将其全AddItem到Combo中
- 用VB能做出“能测出室温”的软件吗?
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_SHOWWINDOW = &H40
Public Const SWP_NOACTIVATE = &H10
Public Const HWND_NOTOPMOST = -2
Public Const HWND_TOPMOST = -1Public Sub FormOnTop(Handle As Long, OnTop As Boolean)
Dim wFlags As Long, PosFlag As Long
wFlags = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE
Select Case OnTop
Case True
PosFlag = HWND_TOPMOST
Case flae
PosFlag = HWND_NOTOPMOST
End Select
SetWindowPos Handle, PosFlag, 0, 0, 0, 0, wFlags
End Sub'将Form1设置为最上层窗体
FormOnTop Form1.hwnd, True'取消Form1为最上层窗体
FormOnTop Form1.hwnd, Flase
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 SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_SHOWWINDOW = &H40
Private Sub Command1_Click()
'使 窗 口 Always On Top用
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End SubPrivate Sub Command2_Click() '使 窗 口 取 消 Always On Top功 能 , 用
SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
Private Sub Form_Load()
'使 窗 口 Always On Top用
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZEEnd Sub
'永远在最顶层
Call PutWindowOnTop(Me)
End Sub'asd.basOption ExplicitPrivate 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
Public Sub PutWindowOnTop(pFrm As Form) '永远在最顶层
Dim lngWindowPosition As Long
'函数成功则返回值为非零,失败则返回0
'可以调用GetLastError函数获得更多的错误信息
lngWindowPosition = SetWindowPos(pFrm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Sub
Private Sub Form_Load()
SetWindowPos Me.hwnd, -1, 0, 0, Screen.Width, Screen.Height, 0
End Sub
人家题目中说:想做一程序中的某一窗体始终位于其它(不论本程序或程序之外的)窗体之上
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
说明他想使某个子窗体位于主窗体和所有其他程序窗体之上,但诸位给的代码都只能实现使某个程序的主窗体位于所以其他程序窗体之上。 也就是说只对主窗体有效。不信大家试试。to mickeypeng(鹏) : 想实现子窗体也topmost的话,
可能先得用SetParent将其父窗体设为NULL才行。