快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰8455下载app:让窗体始终处于最前面



利用SetWindowPos函数可以设置一个窗口的位置和状态,本例恰是使用此函数来把一个窗体放在所有窗体之上,使之老是处于最前面。

我们先来看看SetWindowPos函数的定义和参数:

应用API函数之前必须先在法度榜样中声明如下:

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

此中各参数的意义如下:

参数

意义

hwnd Long

欲定位的窗口

hWndInsertAfter Long

窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面

x,y Long

窗口新的x,y坐标

cx,cy Long

指定新的窗口宽度和高度

wFlags Long

包孕了旗标的一个整数,是下列之一

返回值 Long

非零表示成功,零表示掉败

下面是部分wFlags参数和它们的意义:

参数

意义和应用措施

SWP_DRAWFRAME

环抱窗口画一个框

SWP_HIDEWINDO澳门新葡亰8455下载appW

暗藏窗口

SWP_NOACTIVATE

不激活窗口

SWP_NOMOVE

维持当前位置 (x和y设定将被轻忽) &H2

SWP_NOREDRAW

窗口不自动重画

SWP_NOSIZE

维持当前大年夜小 (cx和cy会被轻忽) &H1

SWP_NOZORDER

维持窗口在列表确当前位置 (hWndInsertAfter将被轻忽)

SWP_SHOWWINDOW

显示窗口 &H40

SWP_FRAMECHANGED

逼迫一条WM_NCCALCSIZE消息进入窗口,纵然窗口的大年夜小没有改变

函数的应用很简单,我们只须在Form_Load中加入如下语句即可:

retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW)

这样窗体就能维持在所有窗体的前面了。

为了进修方便,下面供给了源码:

'-------------------------------------------

' 让一个窗体老是处于最前的例子

'--------------------------------澳门新葡亰8455下载app-----------

'法度榜样阐明:

'本例利用SetWindowPos函数,设置窗体的显示属性

'来实现让一个窗体老是处于其他窗体的前面而不会

'被其他窗体所遮住。

'-------------------------------------------

Option Explicit

'【VB声明】

' 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

'【阐明】

' 这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的感化是急速体现出来的(在vb里应用:针对vb窗体,如它们在win32下樊篱或最小化,则需重设最顶部状态。如有需要,请用一个子类处置惩罚模块来重设最顶部状态

'【返回值】

' Long,非零表示成功,零表示掉败。会设置GetLastError

'【备注】

' 窗口成为最顶级窗口后,它下属的所有窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有下属和物主窗口也会转为非最顶级。Z序列用垂直于屏幕的一根假想Z轴量化这种从顶部到底部排列的窗口顺序

'【参数表】

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

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

' HWND_BOTTOM 将窗口置于窗口列表底部

' HWND_TOP 将窗口置于Z序列的顶澳门新葡亰8455下载app部;Z序列代表在分级布局中,窗口针对一个给定级其余窗口显示的顺序

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

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

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

' y -------------- Long,窗口新的y坐标。如hwnd是一个澳门新葡亰8455下载app子窗口,则y用父窗口的客户区坐标表示

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

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

' wFlags --------- Long,包孕了旗标的一个整数,是下列之一:

' SWP_DRAWFRAME 环抱窗口画一个框

' SWP_HIDEWINDOW 暗藏窗口

' SWP_NOACTIVATE 不激活窗口 &H10

' SWP_NOMOVE 维持当前位置 (x和y设定将被轻忽) &H2

' SWP_NOREDRAW 窗口不自动重画

' SWP_NOSIZE 维持当前大年夜小 (cx和cy会被轻忽) &H1

' SWP_NOZORDER 维持窗口在列表确当前位置 (hWndInsertAfter将被轻忽)

' SWP_SHOWWINDOW 显示窗口 &H40

' SWP_FRAMECHANGED 逼迫一条WM_NCCA澳门新葡亰8455下载appLCSIZE消息进入窗口,纵然窗口的大年夜小没有改变

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 HWND_TOPMOST = -1

Const SWP_SHOWWINDOW = &H40

Private Sub Form_load()

Dim retValue As Long

'将窗体设置为处于所有窗口的顶层,留意在 VB 中运行时,

’可能不可,但编译成EXE后就可以了

retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX,

Me.CurrentY, 300, 300, SWP_SHOWWINDOW)

End Sub

您可能还会对下面的文章感兴趣: