扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
让窗体总是在前
在铁岭等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站制作 网站设计制作按需规划网站,公司网站建设,企业网站建设,高端网站设计,成都全网营销,外贸网站建设,铁岭网站建设费用合理。
可使用Win API SETWINDOWPOS可达到这一目的
该函数的语法是:
SetWindowPos hWnd, hwndInsetAfter, x, y, cx, xy, wFlags
其中:
hWnd ---- 窗体的句柄(handle)。
hWndInsetAfter ---- 它就是决定是否“总在前”的参数,
应用中设置为: HWND_TOPMOST 总在前
HWND_NOTOPMOST 正常的
x,y,cx,cy ----表示窗体的位置和大小的参数,在实际应用中可忽略。
wFlags ---- 决定窗体是否可以移动和改变尺寸,
一般设置成这样的形式: SWP_NOMOVE or SWP_NOSIZE。
将 CTRL + ALT + DEL 功能键之功能取消,然后在结束程序之前,再从新恢复 CTRL + ALT + DEL 之功能
在模组声明区中加入以下声明及模组:
Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Const SPI_SCREENSAVERRUNNING = 97
Public Sub Disable_Ctrl_Alt_Del()
’让 CTRL+ALT+DEL 失效
Dim AyW As Integer
Dim TurFls As Boolean
AwY = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, TurFls, 0)
End Sub
Public Sub Enable_Ctrl_Alt_Del()
’让 CTRL+ALT+DEL 恢复功能
Dim AwY As Integer
Dim TurFls As Boolean
AwY = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, TurFls, 0)
End Sub
’实际使用时,在 Form 中加入以下程序码:
Private Sub Form_Load()
Disable_Ctrl_Alt_Del
End Sub
Private Sub Form_Unload(Cancel As Integer)
Enable_Ctrl_Alt_Del
End Sub
你可以这样做,设置窗体的TopMost 属性为真!
Me.TopMost = True
Form.TopMost 属性
获取或设置一个值,指示该窗体是否应显示为最顶层窗体。
在某些情况下我们需要某个窗体总是在所有窗体的最前端,我们可以使用Form1.show
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
Me.hwnd,
HWND_TOPMOST,
0,
0,
0,
0,
SWP_NOMOVE
Or
SWP_NOSIZE
'
将窗口设为在所有窗口前端
End
Sub
楼上的不行
我可以永远让窗体居前,运行
资源管理器
时不会被遮掩
添加一个Timer控件,将Interval属性设为100
Public
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
Timer1_Timer()
SetWindowPos
Me.hWnd,
HWND_TOPMOST,
0,
0,
0,
0,
O1
+
O2
End
Sub
你是不是用的Visual Studio来开发的?如果是,这样操作:打开 项目 菜单 中的 XXX属性,在弹出的属性页选择最上面那个 应用程序 标签,里面有个启动窗体,你选择一下就可以了。
如果你不是用的visual Studio来开发的,那么可以考虑把另外一个窗口的visible属性先设置为false或者把你要显示的窗口改为对话框的形式,大小比另外一个窗口大一点或者一样(即 模态窗口,必须关闭才能继续操作),这样都可以实现你要的效果。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流