Vb6 表单大小调整以填充屏幕尺寸减去任务栏
如何在vb6中调整窗体的大小,使窗体的下边框位于任务栏的顶部有什么原因不能将窗体最大化?那将是我的第一印象 如果不是跑步者,您可以尝试通过以下方式获得任务栏高度:Vb6 表单大小调整以填充屏幕尺寸减去任务栏,vb6,Vb6,如何在vb6中调整窗体的大小,使窗体的下边框位于任务栏的顶部有什么原因不能将窗体最大化?那将是我的第一印象 如果不是跑步者,您可以尝试通过以下方式获得任务栏高度: Private Const ABM_GETTASKBARPOS = &H5 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type APPBARDATA
Private Const ABM_GETTASKBARPOS = &H5
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type
Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Function GetTaskBarSize()
Dim ABD As APPBARDATA
SHAppBarMessage ABM_GETTASKBARPOS, ABD
MsgBox "Width:" & ABD.rc.Right - ABD.rc.Left
MsgBox " Height:" & ABD.rc.Bottom - ABD.rc.Top
End Sub
然后将窗体高度设置为屏幕高度减去任务栏高度。只减去任务栏?那可能不是你真正想要的。屏幕边缘可能有其他窗口用于“雕刻”桌面区域。另外,请注意,有时任务栏的高度是不相关的,例如当它停靠在屏幕的左侧或右侧时
Galwegian已经展示了如何获得任务栏的高度,但是如果你真的在寻找桌面的可用区域,请使用带有spi_GetWorkArea
标志的函数。它将告诉您桌面的区域,不包括所有桌面工具栏。MSDN建议,如果您对主显示器以外的其他设备上的可用空间感兴趣,则应拨打电话;它填充一条记录,其中一个字段用于监视器的工作区域
我会支持你的想法,你可能真的只是想最大化你的窗口。如果您已经这样做了,并且您想知道您占用了多少空间,那么请获取窗口的当前大小,然后减去窗口边框的尺寸(当窗口最大化时,边框会“隐藏在桌面边缘下”)。您可以使用
sm\u CXFrame
和sm\u CYFrame
标志来实现此目的。我同意您可能希望最大化窗口
但是,如果您确实想知道不包括所有桌面工具栏(任务栏、Microsoft Office工具栏等)的桌面区域,这里有一些用于SystemParametersInfo调用的VB6声明和一个示例函数,该函数将窗体集中在屏幕上,允许使用工具栏。这是从旧的VisualBasic程序员杂志中借来的
Private Const SPI_GETWORKAREA = 48
Private Declare Function SystemParametersInfo& Lib "User32" Alias "SystemParametersInfoA" ( _
ByVal uAction As Long, _
ByVal uParam As Long, lpvParam As Any, _
ByVal fuWinIni As Long)
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Function CenterForm32 (frm As Form)
Dim ScreenWidth&, ScreenHeight&, ScreenLeft&, ScreenTop&
Dim DesktopArea As RECT
Call SystemParametersInfo (SPI_GETWORKAREA, 0, DesktopArea, 0)
ScreenHeight = (DesktopArea.Bottom - DesktopArea.Top) * Screen.TwipsPerPixelY
ScreenWidth = (DesktopArea.Right - DesktopArea.Left) * Screen.TwipsPerPixelX
ScreenLeft = DesktopArea.Left * Screen.TwipsPerPixelX
ScreenTop = DesktopArea.Top * Screen.TwipsPerPixelY
frm.Move (ScreenWidth - frm.Width) / 2 + ScreenLeft, _
(ScreenHeight - frm.Height) / 2 + ScreenTop
End Function
当它被最大化时,它锁定正确吗?我不知道你的确切意思。按照你的建议将窗口设置为vbmaximized会起作用。哦,我的无知之深!谢谢你的帮助,我不需要更多的东西,仅仅是为了最大限度地扩大一个表格刚才额外的信息是有趣的想法感谢链接到该pdf有很多有用的提示在那里,我已经下载了