Arbeitsbereich (Client Area) Problem mit GuiCreate

  • Hallo Leute
    Ich habe folgendes Problem:

    Ich möchte in meiner Gui, mit Minimieren und Close Button, eine feste Größe im Client-Bereich haben...
    Wenn ich bei GuiCreate z.B. 400 x 200 eingebe, erhalte ich bei mir aber nur einen Arbeitsbereich
    von 394 x 172 (mit WinGetClientSize ausgelesen)

    [autoit]

    #include <WindowsConstants.au3>
    $Gui = GUICreate("Test-Gui", 400, 200, -1, -1, $WS_SYSMENU + $WS_MINIMIZEBOX)
    $Client = WinGetClientSize("Test-Gui")
    MsgBox(0, "", "Arbeitsbereich = " & $Client[0] & " x " & $Client[1] & " Pixel")

    [/autoit]


    Bin bei meiner Suche über diesen Uralt-Thread gestoßen:
    Verständnisproblem bei faktischer Breite einer GUI
    Der Thread hat mir aber keine Lösung näher gebracht, nur die Erkenntnis, das es mit den Rändern usw. zu tun hat...

    Wie kann ich nun, egal bei welchen Windows-Design-Einstellungen, oder wie auch immer, den Client-Bereich
    so einstellen, das er immer den von mir angegebenen Wert, hier also 400 x 200, erhält?

    MfG Diggidie

  • Da ich vorher z.B. die Rahmenbreite des jeweiligen Windows-Designs nicht weiß,
    hilft mir WinMove auch nicht wirklich weiter...
    Bei meiner Standart Win 7 Design Einstellung ergibt sich immer eine Differenz von
    6 Pixeln in der Breite, wie auch in dem erwähnten Thread, und das, obwohl die Rahmenbreite
    auf einer Seite schon mehr als 6 Pixel hat ?(?(?(

  • Ich meinte, dass du dein Fenster mit einem x-beliebigen Stil erstellst.
    Danach erfasst du mit WinGetClientSize() die Differenz des Client-Bereichs zur tatsächlichen Fenster-Breite/-Weite deines Fenster und vergrößerst dieses mit WinMove um die Differenz.

  • Schön finde ich das mit dem WinMove nicht gerade, aber funktioniert bei mir...
    Wäre jetzt noch schön zu erfahren, ob es auch bei Usern mit geändertem
    Windows-Designs einwandfrei funktioniert!? Bitte um Rückmeldungen...

    [autoit]

    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $Gui = GUICreate("Test-Gui", 400, 200, -1, -1, $WS_SYSMENU + $WS_MINIMIZEBOX)
    $Client = WinGetClientSize("Test-Gui")
    MsgBox(0, "", "Arbeitsbereich vor WinMove = " & $Client[0] & " x " & $Client[1] & " Pixel")
    $Diff_H = 400 - $Client[0]
    $Diff_V = 200 - $Client[1]
    WinMove("Test-Gui","", -1, -1, 400 + $Diff_H, 200 + $Diff_V)
    $Client = WinGetClientSize("Test-Gui")
    MsgBox(0, "", "Arbeitsbereich nach WinMove = " & $Client[0] & " x " & $Client[1] & " Pixel")

    [/autoit]