这是一个关于模态窗口与非模态窗口的问题.
实现非模态窗口也没什么难度
Dim form As New Form1
form.TopMost = True
form.Show()
你再将鼠标移到父窗口上,弹出的窗口也不会消失.
引用API函数SetWindowPos就可以解决.下面看看代码:
Const?SWP_NOSIZE?=?H1
Const?FLAG?=?SWP_NOMOVE?Or?SWP_NOSIZE
Const?HWND_TOPMOST?=?-1
Const?HWND_TOP?=?0
Const?HWND_BOTTOM?=?1
将窗口设置最前:Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAG)
取消窗口的最前:Call SetWindowPos(Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAG)
函数的第一个参数是根据实际情况改变的,它要求给它传送一个窗口的句柄,这里的 Me.hwnd 就给函数传送了当前窗口的句柄,也就是将当前窗口前置或取消前置.如果要前置其他窗口,那么请向函数传送其他窗口的句柄,这个可以根据:FindWindow API函数获取.
如果要不会被DIRECTX全屏的程序覆盖,那么加上一个timer事件,每隔一秒就把窗口显示在前面,哈哈我测试过了有效,以前学过一个学期的VB.
代码如下
Option Explicit
Const Hwndx = -1
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_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Dim XX As Long
记住别忘加timer按钮
或者这样
建立模块
Dim rtn
'让窗口在顶层
'取消窗口在顶层
以上就是土嘎嘎小编为大家整理的vb.net总在最前相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!