Wie Größe Sie Ihr Formulars in VB6, so dass Form untere Grenze an der Spitze der Taskleiste istFormular Sizing Bildschirmabmessungen zu füllen minus Taskleiste
Antwort
Gibt es einen Grund, warum Sie können nicht einfach das Formular maximieren? Das wäre mein erster Eindruck.
Wenn das nicht ein Läufer, könnten Sie versuchen, die Taskleiste Höhe auf folgende Weise erhalten:
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
und dann auf die Höhe des Bildschirms Ihrer Form der Höheneinstellung weniger die Höhe der Taskleiste.
Einstellung der rhe Fenster zu vbmaximized, wie Sie vorgeschlagen, macht den Trick..oh die Breite meiner Ignoranz! – kjack
Minus nur die Taskleiste? Das ist vielleicht nicht das, was du willst. Es kann andere Fenster an den Rändern des Bildschirms geben, die Bereiche des Desktops "ausschneiden" sollen. Beachten Sie auch, dass die Höhe der Taskleiste manchmal irrelevant ist, z. B. wenn es an der linken oder rechten Seite des Bildschirms angedockt ist.
Galwegian hat gezeigt, wie man die Höhe der Taskleiste erreicht, aber wenn Sie wirklich nach dem nutzbaren Bereich des Desktops suchen, verwenden Sie stattdessen die SystemParametersInfo
-Funktion mit dem spi_GetWorkArea
-Flag. Es wird Ihnen den Bereich des Desktops ohne alle Desktop-Symbolleisten anzeigen. MSDN empfiehlt, wenn Sie sich für den verfügbaren Speicherplatz auf einem anderen als dem primären Monitor interessieren, sollten Sie stattdessen GetMonitorInfo
aufrufen; es füllt einen Datensatz und eines der Felder ist für den Arbeitsbereich des Monitors.
Ich werde die Idee, dass Sie wirklich nur wollen, um Ihr Fenster zu maximieren. Wenn Sie das bereits getan haben und wissen möchten, wie viel Platz Sie einnehmen, erhalten Sie die aktuelle Größe Ihres Fensters und subtrahieren Sie dann die Abmessungen Ihres Fensterrahmens (die unter den Kanten von "versteckt" sind) der Desktop, wenn ein Fenster maximiert ist). Sie können GetSystemMetrics
mit den Flags sm_CXFrame
und sm_CYFrame
dafür verwenden.
Vielen Dank für Ihre Hilfe Ich brauche nicht mehr als nur um ein Formular zu maximieren, nur jetzt die zusätzlichen Informationen sind interessant, aber – kjack
Ich werde zustimmen, dass Sie wahrscheinlich Ihr Fenster maximieren möchten.
Aber wenn Sie wirklich den Bereich des Desktops mit Ausnahme aller Desktop-Symbolleisten (Taskleiste, Microsoft Office-Symbolleiste usw.) kennen möchten, hier einige VB6-Deklarationen für den SystemParametersInfo-Aufruf und eine Beispielfunktion, die Formulare auf dem Bildschirm zentriert, Berücksichtigung der Symbolleisten. Dies ist von 101 tech tips (PDF) aus dem alten Visual Basic Programmers Journal ausgeliehen.
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
Danke für den Link zu diesem pdf gab es eine Menge nützlicher Tipps drin und ich habe es heruntergeladen – kjack
Verriegelt es richtig, wenn es maximiert ist? –
Ich weiß nicht, was Sie genau meinen? – kjack