社区
VB基础类
帖子详情
vb 中有没有一个属性使一个FORM始终显示在最前呢?
sgrain
2003-12-21 03:48:59
vb 中有没有一个属性使一个FORM始终显示在最前呢?
就像REALPLAY的总在是最前显示
...全文
271
2
打赏
收藏
vb 中有没有一个属性使一个FORM始终显示在最前呢?
vb 中有没有一个属性使一个FORM始终显示在最前呢? 就像REALPLAY的总在是最前显示
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FSoft
2003-12-21
打赏
举报
回复
可以用Timer控件,在其中每隔一段时间就设置窗体的Zorder 0,也可以使用SetWindowPos函数(API)来使用窗体置顶
rainstormmaster
2003-12-21
打赏
举报
回复
没有这样的属性,可以使用api函数实现:
'-------------------------------------------
' 让一个窗体总是处于最前的例子
'-------------------------------------------
' 洪恩在线 求知无限
'-------------------------------------------
'程序说明:
'本例应用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序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序
' HWND_TOPMOST 将窗口置于列表顶部,并位于任何最顶部窗口的前面 -1
' HWND_NOTOPMOST 将窗口置于列表顶部,并位于任何最顶部窗口的后面 -2
' x -------------- Long,窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示
' y -------------- Long,窗口新的y坐标。如hwnd是一个子窗口,则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_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
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
vb
Form
的基本事件
Private Sub
Form
_Activate() 当此窗体变为活动窗口时触发 End Sub Private Sub
Form
_Click() 单击时触发 End Sub Private Sub
Form
_DblClick() 双击时触发 End Sub Private Sub
Form
_Deactivate() 当此窗体不再是活动窗口时触发 End Sub Private Sub For
VB
让窗体
始终
处于
最前
面
应用SetWindowPos函数可以设置
一个
窗口的位置和状态,本例正是利用此函数来把
一个
窗体放在所有窗体之上,使之总是处于
最前
面。 我们先来看看SetWindowPos函数的定义和参数: 使用API函数之前必须先在程序
中
声明如下:Private Declare Function SetWindowPos Lib /"user32/" (ByVal hwnd As Long, ByVal hW
Henry手记-
VB
.net Win
Form
中
的
FORM
初探(一)
Henry手记-
VB
.net Win
Form
中
的
FORM
初探(一)韩睿(2002.9.25) 经常有网友在我主持的版面上发贴子或写信直接来问我,为什么
vb
.net和
vb
6差了这么多。当然,问得最多的就是关于窗体的调用,这也是
一个
与
vb
6相比,
vb
.net具有的变化最大的特征—面向对象(限于篇幅,有关面向对象的基本内容请参看面向对象的书籍)。当有朋友大喊
vb
.net怎么这么这么……(此处
.NET将
Form
窗体作为子控件
显示
在Panel
中
.NET将
Form
窗体作为子控件
显示
在Panel
中
1. 在窗体的构造器New()方法
中
,添加以下代码 Public Sub New() ' 此调用是 Windows 窗体设计器所必需的。 InitializeComponent() ' 在 InitializeComponent() 调用之后
vb
.net
一个
窗体在另
一个
窗体的容器内
显示
Private Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As IntPtr _ , ByVal hWndNewParent As IntPtr) As In
VB基础类
7,788
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章