2009-01-05 9 views

Antwort

4

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.

+0

Einstellung der rhe Fenster zu vbmaximized, wie Sie vorgeschlagen, macht den Trick..oh die Breite meiner Ignoranz! – kjack

4

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.

+0

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

4

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 
+0

Danke für den Link zu diesem pdf gab es eine Menge nützlicher Tipps drin und ich habe es heruntergeladen – kjack

Verwandte Themen