重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

vb.net总在最前,vb窗口始终在最前面

VB.NET窗口置顶在最前面显示的时候不影响目前鼠标焦点.

这是一个关于模态窗口与非模态窗口的问题。

专注于为中小企业提供网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业景谷免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

实现非模态窗口也没什么难度

Dim form As New Form1

form.TopMost = True

form.Show()

你再将鼠标移到父窗口上,弹出的窗口也不会消失。

在VB中怎样才能让自己的窗体总在最前显示

引用API函数SetWindowPos就可以解决。下面看看代码:

Private Declare Function SetWindowPos Lib "user32.dll" (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_NOMOVE = H2

Const SWP_NOSIZE = H1

Const FLAG = SWP_NOMOVE Or SWP_NOSIZE

Const HWND_TOPMOST = -1

Const HWND_NOTOPMOST = -2

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函数获取。

如何使VB窗口总在最前?

如果要不会被DIRECTX全屏的程序覆盖,那么加上一个timer事件,每隔一秒就把窗口显示在前面,哈哈我测试过了有效,以前学过一个学期的VB。

代码如下

Option Explicit

Const Hwndx = -1

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_Load()

Timer1.Enabled = True

Timer1.Interval = 1000

End Sub

Private Sub Timer1_Timer()

Dim XX As Long

XX = SetWindowPos(Me.Hwnd, Hwndx, 0, 0, 0, 0, 3)

End Sub

记住别忘加timer按钮

或者这样

建立模块

Option Explicit

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)

Private Sub Form_Load()

Dim rtn

'让窗口在顶层

rtn = SetWindowPos(Me.hwnd, -1, 0, 0, 0, 0, 3)

'取消窗口在顶层

'rtn = SetWindowPos(F_V.hwnd, -2, 0, 0, 0, 0, 3)

End Sub


文章标题:vb.net总在最前,vb窗口始终在最前面
文章路径:http://cqcxhl.cn/article/hcpojp.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP