Checkbox GUI im Vordergrund

  • Hallo Leute,
    ich würde gern in mein Script eine Checkbox einbauen, mit der ich bei Bedarf die GUI in den Vordergrund setzen kann.
    Aber irgendwie funktionert es nicht. Seht ihr meinen Fehler?

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    GUICreate('TOPMOST',350,200,-1,-1,BitOR($WS_POPUP,$WS_BORDER))
    $check=GUICtrlCreateCheckbox('immer im Vordergrund',5,5,120,30)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case -3
    ExitLoop
    Case $check
    if BitAnd(GUICtrlRead($check),$GUI_CHECKED) = $GUI_CHECKED then
    GUISetStyle(BitOR($WS_POPUP,$WS_BORDER,$DS_SETFOREGROUND))
    ;GUISetStyle(BitOR($WS_POPUP,$WS_BORDER),$WS_EX_TOPMOST) funktioniert auch nicht
    Else
    GUISetStyle(BitOR($WS_POPUP,$WS_BORDER))
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    $hGUI = GUICreate('TOPMOST',350,200,-1,-1,BitOR($WS_POPUP,$WS_BORDER))
    $check=GUICtrlCreateCheckbox('Always on Top',5,5,120,30)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case -3
    ExitLoop
    Case $check
    If GUICtrlRead($check) = $GUI_CHECKED Then
    WinSetOnTop ( "T", "", 1 )
    Else
    WinSetOnTop ( "T", "", 0 )
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Wenn du der GUI schon ein Handle verpasst, solltest du es für WinSetOnTop auch verwenden.
    Der Status der Checkbox ist wie es der TE bereits gemacht hat mit BitAND() abzufragen, da die Checkbox mehrere States haben kann!

    Ich würde es, aktuelle AutoIt-Version vorausgesetzt, so machen:

    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    $hGUI = GUICreate('TOPMOST', 350, 200, -1, -1, BitOR($WS_POPUP, $WS_BORDER))
    $check = GUICtrlCreateCheckbox('immer im Vordergrund', 5, 5, 120, 30)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case -3
    ExitLoop
    Case $check
    WinSetOnTop($hGUI, "", (BitAND(GUICtrlRead($check), $GUI_CHECKED)) ? 1 : 0)
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
    UNPLEASANT SPOILER

    You just lost the game!

  • Will auch noch mein Senf dazugeben, wenn es um's überprüfen einer Checkbox geht:

    [autoit]


    ;Returns Value if Checkbox is checked
    Func _IsChecked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
    EndFunc

    [/autoit]