下面是窗口最上層顯示,和取消最上層顯示的代碼。我現在遇到的問題是,我要讓form1窗體是活動窗體的時候,form2在最上層,而其它窗體是活動窗體的時候,form2不是在最上層的。應該怎樣運用下面的代碼呢。各位幫我想想辦法。
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 Declare Function SetWindowPos Lib _
"user32" Alias "SetWindowPos" (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
使窗口Always On Top时,可以用下面的语句:
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _
Or SWP_NOSIZE
使窗口取消Always On Top功能,用下面的语句:
SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _
Or SWP_NOSIZE
此问题由李海回答。
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 Declare Function SetWindowPos Lib _
"user32" Alias "SetWindowPos" (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
使窗口Always On Top时,可以用下面的语句:
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _
Or SWP_NOSIZE
使窗口取消Always On Top功能,用下面的语句:
SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _
Or SWP_NOSIZE
此问题由李海回答。
解决方案 »
- 关于VB两个程序之间数据传递-高手来帮帮我呀
- VB工程用Setup Factory 7.0做的安装包,WIN2K PRO 下可以安装,高级服务器版上安装不了。
- 请问,有VB6直接读写Access表单的案例吗?感激!我没分了,给完了。T_T
- 如何判断一个form 上的 按钮是否被点击
- 密码的修改
- 如何在文本框或变量中存放特殊字符?
- 如何在这里面下载东西 为什么没有下载按钮
- VBS脚本语言:已知某点坐标,搜索给定范围内最近点~请教,如何实现~
- msflexgrid+data,添加新记录错误....
- 出售ERP原程序
- 关于single 类型.
- 又没有一种表格控件,带有treeview的折叠功能(+/-)
Private Sub Form1_Activate()
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _
Or SWP_NOSIZE End Subform1失去焦点时:Private Sub Form_Deactivate()
SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE _
Or SWP_NOSIZE End Sub其他放在model里面
而我需要當開啟其它窗口時,此開啟的窗口就在最上層,form2不為最上層。
這個應該如何做呢
Private Const SWP_NOSIZE = &H1 '維持當前尺寸
Private Const SWP_NOMOVE = &H2 '維持當前位置
Private Const SWP_NOACTIVATE = &H10 '不擊活窗體
Private Const SWP_SHOWWINDOW = &H40 '顯示窗口
Private Const HWND_TOP = 0 '窗口置頂
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 Sub Form_Activate()
SetWindowPos form2.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
end sub只是這個種,我怎麼也關閉不掉form2