Maximieren etwas anders...

  • Hallo!

    Schon wieder eine Frage ;) :

    Ich habe ein Skript mit mehreren GUIs.
    Jetzt möchte ich, dass wenn man auf "Maximieren" im Hauptfenster drückt, dass es sich oben am Rand ablegt und sich auf Maximalbreite verbreitert, Höhe soll aber 90 bleiben. Wie ist sowas möglich? Der Button Maximieren soll ja auf Kleiner machen bleiben...

    Einmal editiert, zuletzt von MatthiasG. (2. März 2009 um 19:49)

  • Hallo MatthiasG,
    ich denke Du suchst sowas:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #region - GUI Create
    $fenster = GUICreate('',200 ,90 ,-1,-1,$WS_MAXIMIZEBOX)
    GUISetState()
    #endregion

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = -6
    WinMove($fenster,"",0,0,@DesktopWidth,90,1)

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

    EndSelect
    WEnd
    #endregion

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Danke! Das ist es! Wie registriere ich denn, das der Nutzer wieder klein macht? Maximieren geht ja über $GUI_MAXIMIZE o.s.ä.

    Hat sich geklärt, Danke :D

    Einmal editiert, zuletzt von MatthiasG. (2. März 2009 um 19:49)

    • Offizieller Beitrag

    MatthiasG für dich könnte auch folgendes Script interessant sein.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt('GUIOnEventMode', 1)

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

    If Not IsDeclared('WS_EX_COMPOSITED') Then Global Const $WS_EX_COMPOSITED = 0x02000000
    Global $hGUI = GUICreate('Test', 640, 90, -1, 0, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX, $WS_SIZEBOX), $WS_EX_COMPOSITED)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    GUISetState()
    GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")

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

    While True
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func MY_WM_GETMINMAXINFO($hWnd, $msg, $wParam, $lParam)
    If $hWnd = $hGUI Then
    Local $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
    DllStructSetData($minmaxinfo, 7, 200) ; min X
    DllStructSetData($minmaxinfo, 8, 90) ; min Y
    DllStructSetData($minmaxinfo, 9, 1024) ; max X
    DllStructSetData($minmaxinfo, 10, 90) ; max Y
    EndIf
    EndFunc ;==>MY_WM_GETMINMAXINFO

    [/autoit]


    Wenn du auf die MaximizeBox klicks wird die Gui aus die Maximalmaße (max X und max Y ) vergrößert und beim verkleinern auf die Normalgröße zurückgesetzt. Das Script hab ich mal von Oscar bekommen :)

    • Offizieller Beitrag

    Ich dachte, er meint das eher so:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt('GUIEventOptions', 1)

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

    $bSwitch = True
    Global $hGUI = GUICreate('Test', 640, 480, -1, 0, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, '_Maximize')
    GUISetState()

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

    While True
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Maximize()
    Switch $bSwitch
    Case True
    WinMove($hGUI, '', 0, 0, @DesktopWidth, 480)
    Case False
    WinMove($hGUI, '', @DesktopWidth/2-320, 0, 640, 480)
    EndSwitch
    $bSwitch = Not $bSwitch
    EndFunc

    [/autoit]
  • Die sind beide sehr interessant! Habs mir abgespeichert! Wer ich auf jedem Fall noch brauchen! Danke :thumbup: