VB窗体最大化的问题, 高手帮看下
我BorderStyle设置成了0-None,然后使用按钮进行最大化,使用Form1.WindowState=2进行最大化,但是运行后,就全屏了,把任务栏给覆盖掉,变成了...
我BorderStyle设置成了0-None, 然后使用按钮进行最大化, 使用Form1.WindowState = 2进行最大化, 但是运行后, 就全屏了, 把任务栏给覆盖掉,变成了全屏, 请问这个如何解决?让它不覆盖任务栏和普通最大化一样. 我刚开始接触VB, 还不怎么懂
展开
4个回答
展开全部
VB程序运行时,把窗口最大化后,窗口是不能被调整大小的(最小化除外),在程序中也不行。
设计时,可以正常窗口呈现,并屏蔽窗体的最大化按钮,自己做个替代的“最大化”按钮,实现窗体放大。当点击“最大化”时,触发Form的ReSize事件,在Form的ReSize事件中,写入:
Private Sub Form_Resize()
Form1.Left = 0
Form1.Top = 0
Form1.Width = Screen.Width
Form1.Height = Screen.Height - GetTaskbarHeight
End Sub
(当程序启动时,也会同时触发Form_ReSize的)
其中,GetTaskbarHeight的获取要写进模块文件中:
Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Const SPI_GETWORKAREA = 48
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Function GetTaskbarHeight() As Integer
Dim lRes As Long
Dim rectVal As RECT
lRes = SystemParametersInfo(SPI_GETWORKAREA, 0, rectVal, 0)
GetTaskbarHeight = ((Screen.Height / Screen.TwipsPerPixelX) -rectVal.Bottom) * Screen.TwipsPerPixelX
End Function
设计时,可以正常窗口呈现,并屏蔽窗体的最大化按钮,自己做个替代的“最大化”按钮,实现窗体放大。当点击“最大化”时,触发Form的ReSize事件,在Form的ReSize事件中,写入:
Private Sub Form_Resize()
Form1.Left = 0
Form1.Top = 0
Form1.Width = Screen.Width
Form1.Height = Screen.Height - GetTaskbarHeight
End Sub
(当程序启动时,也会同时触发Form_ReSize的)
其中,GetTaskbarHeight的获取要写进模块文件中:
Public Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Const SPI_GETWORKAREA = 48
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Function GetTaskbarHeight() As Integer
Dim lRes As Long
Dim rectVal As RECT
lRes = SystemParametersInfo(SPI_GETWORKAREA, 0, rectVal, 0)
GetTaskbarHeight = ((Screen.Height / Screen.TwipsPerPixelX) -rectVal.Bottom) * Screen.TwipsPerPixelX
End Function
展开全部
设置FORM的属性StartUpPosition为0
Private Sub Command1_Click()
Dim h As Long
Dim w As Long
Me.WindowState = 2
h = Me.Height
w = Me.Width
Me.WindowState = 0
Me.Width = w
Me.Height = h - 300
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Command1_Click()
Dim h As Long
Dim w As Long
Me.WindowState = 2
h = Me.Height
w = Me.Width
Me.WindowState = 0
Me.Width = w
Me.Height = h - 300
End Sub
Private Sub Command2_Click()
End
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你推荐一个,这个实现的办法比较好,但会比较麻烦,是用API函数解决这个问题,任务栏高度大小不一样的情况,当任务栏是在左右边的时候,还要考虑任务栏的宽度。http://z.baidu.com/question/99112872.html?si=8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好的办法是用api函数实现,一楼和二楼的方法都不错,你可以参考下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询