Minimale Breite einer GUI ($WS_SIZEBOX) begrenzen

  • Hallo Forum, Techniker und AutoIT-Profis

    Anfängerfrage: Gibt es irgendeine Notierung, mit der ich die minimale Breite einer GUI, die mit $WS_SIZEBOX erstellt wurde, festlegen kann?

    Ich beabsichtige, dass beim manuellen Verkleinern der GUI mindestens ein Control vollständig sichtbar bleibt - dafür wäre es nützlich, wenn es eine Anweisung geben würde, die die Mindest-Breite der GUI festlegen könnte, so dass die GUI nicht schmaler als diese Mindest-Breite "gezogen" werden kann.

    Vielen Dank im Voraus

  • hi!

    du könntest z.b. einstellen, dass wenn die größe eine bestimmte grenze unterschreitet, du das fenster auf eine voreingestellte größe setzt.

    beispiel:

    [autoit]


    While 1
    $fenster = WinGetPos("AutoIt Help","") ;gibt [0]x-pos,[1]y-pos,[2]breite und [3]höhe zurück

    If $fenster[2] < 200 Then ;wenn breite < 200
    WinMove("AutoIt Help", "", $fenster[0],$fenster[1], 200, $fenster[3]) ;position + höhe bleibt, breite auf 200
    ElseIf $fenster[3] < 200 Then ;wenn höhe < 200
    WinMove("AutoIt Help", "", $fenster[0],$fenster[1], $fenster[2], 200) ;position + breite bleibt, höhe auf 200
    EndIf
    sleep(20) ;kurzes sleep, damit systemauslastung nicht zu groß
    WEnd

    [/autoit]
  • Hi @ darksideofsanta,

    danke, das wäre bereits 'ne nette Lösung.

    Ein besonderes GUI-Event mit Rückgabewert, wenn die Fenstergröße geändert wurde, gibt's demnach wohl nicht? Das wäre mir persönlich noch lieber als eine Schleife, in der WinGetPos() abgefragt wird.

    Ich Danke für jeden Hinweis.

    • Offizieller Beitrag

    Hallo,

    Tüllich gibt es das ;) Die Variable heiß $GUI_EVENT_RESIZED und wird von GuiGetMSG() Zurückgegeben.

    Das könnte dann ca so aussehen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $AForm1 = GUICreate("AForm1", 633, 453, 193, 125, $WS_SIZEBOX)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_RESIZED
    $fenster = WinGetPos($AForm1, "") ;gibt [0]x-pos,[1]y-pos,[2]breite und [3]höhe zurück
    If $fenster[2] < 200 Then ;wenn breite < 200
    WinMove($AForm1, "", $fenster[0], $fenster[1], 200, $fenster[3]) ;position + höhe bleibt, breite auf 200
    ElseIf $fenster[3] < 200 Then ;wenn höhe < 200
    WinMove($AForm1, "", $fenster[0], $fenster[1], $fenster[2], 200) ;position + breite bleibt, höhe auf 200
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Mfg Spider

  • @ gtaspider, Xenobiologist,

    vielen Dank,

    ich bin ehrlich, weil ich offensichtlich mit Blindheit geschlagen war: Dieses Event ist in der Hilfe beschrieben. Ich bin nur nicht auf die einfachste aller Ideen gekommen, einmal unter GUIGetMsg nachzusehen.

    Auf die Idee, jetzt sogar die Windows-Message-Codes abzufragen, bin ich absolut nicht gekommen.

    Ich habe mich für mein Script für die Lösung von Xenobiologist entschieden. Die macht mich richtig glücklich... :party:

    Vielen Dank & CU

    Einmal editiert, zuletzt von Argonaut (8. Oktober 2007 um 18:23)