vb的窗体怎么显示在最前端

vb的窗体怎么显示在最前端,第1张

在某些情况下我们需要某个窗体总是在所有窗体的最前端,我们可以使用Form1show

1来实现,但是这样会出现一个问题,就是使整个程序暂停运行,直到Unload

Form1后程序才会继续运行

那么如何使我的窗口总在最前?而不影响到我的整体程序运行呢

使用api函数

SetWindowPos

可以很容易的作到。

SetWindowPos

就是完成设置窗口位置和状态(pos=position)的功能。源代码如下:

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

Mehwnd,

HWND_TOPMOST,

0,

0,

0,

0,

SWP_NOMOVE

Or

SWP_NOSIZE

'

将窗口设为在所有窗口前端

End

Sub

1、当win+d后最小化后,再win+d显示窗口,窗口时全屏的,但其放在了任务栏后面;

2、当鼠标点击窗口后使全屏窗口获得焦点在最前面,然后再win+d最小化,再win+d显示,此时全屏是最前面的;

3、但恢复到正常窗口大小时,一直在所有窗口的前面,以后都在其他窗口的最前面,始终都在其他窗口的前面,直到窗口释放;

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

Const SWP_NOMOVE = &H2

Const SWP_NOSIZE = &H1

private sub form_load()

'topmost=-1 top=0

setWindowPos hwnd,-1,0,0,0,0,SWP_NOSIZE +SWP_NOMOVE

end sub

hwnd ----------- Long,欲定位的窗口

hWndInsertAfter - Long,窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一:

HWND_BOTTOM

将窗口置于窗口列表底部

HWND_TOP

将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序

HWND_TOPMOST

将窗口置于列表顶部,并位于任何最顶部窗口的前面

HWND_NOTOPMOST

将窗口置于列表顶部,并位于任何最顶部窗口的后面

x -------------- Long,窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示

y -------------- Long,窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示

cx ------------- Long,指定新的窗口宽度

cy ------------- Long,指定新的窗口高度

wFlags --------- Long,包含了旗标的一个整数

SWP_DRAWFRAME

围绕窗口画一个框

SWP_HIDEWINDOW

隐藏窗口

SWP_NOACTIVATE

不激活窗口

SWP_NOMOVE

保持当前位置(x和y设定将被忽略)

SWP_NOREDRAW

窗口不自动重画

SWP_NOSIZE

保持当前大小(cx和cy会被忽略)

SWP_NOZORDER

保持窗口在列表的当前位置(hWndInsertAfter将被忽略)

SWP_SHOWWINDOW

显示窗口

SWP_FRAMECHANGED

强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变

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

Mehwnd,

HWND_TOPMOST,

0,

0,

0,

0,

SWP_NOMOVE

Or

SWP_NOSIZE

'

将窗口设为总在最前

End

Sub

在windows XP任务栏上点右键,选择“属性”,会打开“任务栏和开始菜单”属性窗沪护高咎薨侥胳鞋供猫口,勾选“将任务栏保持在其它窗口的前端”一项(如下图),确定。因为系统时间是显示在任务栏区,任务栏在前,那么时间就在前。

以上就是关于vb的窗体怎么显示在最前端全部的内容,包括:vb的窗体怎么显示在最前端、用QProcess重启后的程序怎么放在窗口最前端显示、怎么把VB做的程序总是在前端显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9463257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存