• Offizieller Beitrag

    Mir ist gerade eine Besonderheit aufgefallen, mit der ich bereits bei einigen GUIs zu kämpfen hatte.

    Problem:
    Wenn ich den Befehl:

    [autoit]

    GUICtrlSetState($hButton, $GUI_ONTOP)

    [/autoit]


    benutzt hatte, dann wollte das GUI-Element (z.B. ein Button) oft nicht im Vordergrund erscheinen, ja er war sogar mitunter erst gar nicht sichtbar. Wenn man dann mit der Maus über die GUI fuhr, dann erschien plötzlich der Button.
    Dieses Verhalten konnte ich mir bisher nicht erklären, was dann dazu geführt hat, dass ich das anders gelöst hatte.
    Jetzt bin ich aber dahintergekommen, woran das liegt.
    Dazu hier ein einfaches Beispielscript:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('Test', 400, 300)
    $hLabel = GUICtrlCreateLabel('Irgend ein Text', 0, 0, 400, 300)
    $hButton = GUICtrlCreateButton('Drück mich', 50, 100, 100, 25)

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

    ; an dieser Stelle führt der folgende Befehl dazu, dass der Button hinter das Label gesetzt wird (verschwindet)
    GUICtrlSetState($hButton, $GUI_ONTOP)

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

    GUISetState()

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

    ; aber hier wird der Button nach vorne geholt
    ;~ GUICtrlSetState($hButton, $GUI_ONTOP)

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

    While True
    Switch GUIGetMsg()
    Case $hButton
    MsgBox(0, 'Test', 'Button')
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Die Lösung:
    Den Befehl GUICtrlSetState($hButton, $GUI_ONTOP) darf man erst benutzen, nachdem man das Fenster mit GUISetState() sichtbar gemacht hat.

    Vielleicht hatte ja auch einer von euch schon damit zu kämpfen...