Style umschalten

  • Morgen Leute,

    wieso wird bei diesem Skript nicht auf Knopfdruck die Titelleiste angezeigt?
    Nur wenn ich das Fenster minimiere und wieder maximier dann ist sie da.

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    GUISetStyle($GUI_SS_DEFAULT_GUI)
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von m-obi (13. März 2012 um 04:54)

  • ja weil du

    [autoit]

    $WS_POPUP

    [/autoit]

    als Style benutzt... Wenn du es löschst schaut es schon anders aus.

    EDIT: Achso sry, hatte deine Frage nicht ganz verstanden. Also bei mir erscheint bei Klick auf deinem Button die Titelleiste usw. schon.

    2 Mal editiert, zuletzt von oispnr (12. März 2012 um 09:04)

  • Weil erst dann die GUI mit den neuen informationen neu gezeichent wird.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • z.b.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    GUISetState (@SW_MINIMIZE)
    GUISetStyle($GUI_SS_DEFAULT_GUI)
    GUISetState (@SW_RESTORE)
    EndSwitch
    WEnd

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Sorry, ich kann es nicht ausprobieren, da es bei mir sowieso problemlos klappt. Aber wie wäre es damit:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    GUISetState(@SW_HIDE)
    GUISetState (@SW_MINIMIZE)
    GUISetStyle($GUI_SS_DEFAULT_GUI)
    GUISetState (@SW_RESTORE)
    GUISetState(@SW_SHOW)
    EndSwitch
    WEnd

    [/autoit]
  • Ne haben wir auch schon versucht und funzt auch nicht, er aktualisiert das ganze nur wenn er es einmal in die Taskleiste switcht hmpf. :(
    Noch wer ne Idee?

  • Hi,

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    GUISetStyle($GUI_SS_DEFAULT_GUI)

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

    SetWindowPos ( _
    $hGui, 0, _
    0, 0, 0, 0, _
    BitOR ($SWP_NOMOVE, $SWP_NOSIZE, $SWP_NOZORDER, $SWP_FRAMECHANGED) _
    )

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

    EndSwitch
    WEnd

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

    Func SetWindowPos ($hWnd, $hWndInsertAfter, $X, $Y, $cx, $cy, $uFlags)

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

    Local $aRes = DllCall ("user32.dll", "BOOL", "SetWindowPos", _
    "HWND", $hWnd, _
    "HWND", $hWndInsertAfter, _
    "INT", $X, _
    "INT", $Y, _
    "INT", $cx, _
    "INT", $cy, _
    "UINT", $uFlags)
    Return $aRes[0]

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

    EndFunc

    [/autoit]


    Gruß
    Greenhorn


  • Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP, $WS_EX_COMPOSITED)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    GUISetStyle($GUI_SS_DEFAULT_GUI)
    $aPos = WinGetPos($hGui)
    $hRegn = _WinAPI_CreateRectRgn(0, 0, $aPos[2], $aPos[3])
    _WinAPI_SetWindowRgn($hGui, $hRegn)
    _WinAPI_RedrawWindow($hGui, 0, $hRegn, BitOR($RDW_INVALIDATE, $RDW_FRAME))
    EndSwitch
    WEnd

    [/autoit]
  • funkey: So sollte es doch auch reichen:

    [autoit]

    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP, $WS_EX_COMPOSITED)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    GUISetStyle($GUI_SS_DEFAULT_GUI)
    _WinAPI_RedrawWindow($hGui, 0, 0, BitOR($RDW_INVALIDATE, $RDW_FRAME, $RDW_UPDATENOW))
    EndSwitch
    WEnd

    [/autoit]
  • Also vielen Dank euch dreien.
    @progandy: Deins funktioniert bei mir überhaupt nicht, keine Veränderung.
    funkey: Deins funktioniert, nur die Titelleiste sieht aus wie die von Win98 und 2k.
    Greenhorn: Deine Lösung ist die, die ich haben wollte, vielen Dank. Läuft perfekt. Sieht auch nach Vista aus. :)

    Hier nochmal die Lösung ein bisschen erweitert um es genauer zu sehen.
    Falls es noch jemand braucht.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

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

    Global $xShow

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

    $hGui = GUICreate("Gui", 260, 100, -1, -1, $WS_POPUP)
    $hShow = GUICtrlCreateButton("einblenden", 45, 50, 150, 20)
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hShow
    If $xShow Then
    GUISetStyle($WS_POPUP)
    GUICtrlSetData($hShow, "einblenden")
    $xShow = False
    Else
    GUISetStyle($GUI_SS_DEFAULT_GUI)
    GUICtrlSetData($hShow, "ausblenden")
    $xShow = True
    EndIf
    SetWindowPos($hGui, 0, 0, 0, 0, 0, BitOR($SWP_NOMOVE, $SWP_NOSIZE, $SWP_NOZORDER, $SWP_FRAMECHANGED))
    EndSwitch
    WEnd

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

    Func SetWindowPos($hWnd, $hWndInsertAfter, $X, $Y, $cx, $cy, $uFlags)
    Local $aRes = DllCall("user32.dll", "BOOL", "SetWindowPos", _
    "HWND", $hWnd, _
    "HWND", $hWndInsertAfter, _
    "INT", $X, _
    "INT", $Y, _
    "INT", $cx, _
    "INT", $cy, _
    "UINT", $uFlags)
    Return $aRes[0]
    EndFunc

    [/autoit]