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

如何在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
    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有很多有用的提示在那里,我已经下载了