Eigenschaftlose GUI - jedoch verschiebbar!

  • Hi Wissende - Grüße vom AutoIt-Systematisch-Dämlichen!

    Ich habe folgende, möglichst eigenschaftslose GUI gebastelt:

    [autoit]


    include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $frm= GUICreate("Frame", 200, @DesktopHeight-20, 10, 10, $WS_POPUP + $WS_DLGFRAME)
    $ctrl= GUICtrlCreateButton("Close", 10, 10, 180, 180)
    GUICtrlSetOnEvent($ctrl, "GUI_EVENT_CLOSE")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func GUI_EVENT_CLOSE()
    Exit
    EndFunc

    [/autoit]

    Diese GUI soll man jedoch auf dem Desktop verschieben können.

    Mein Problem: Nehme ich den Style $WS_CAPTION hinzu, erhalte ich eine Titel-Bar. Die will ich aber nicht... :comp2:

    Welche Möglichkeit gibt's, das Dingen - so wie es ist - dennoch verschiebbar zu machen? Soweit ich es ahne - wenn es keinen eigenen Style dafür gibt - sollte es etwas mit BitNOT() zu tun haben.

    Danke bereits für jede Erhellung.

  • Du benötigst ein Label wie dieses hier:

    [autoit]

    $LabelDragME = GUICtrlCreateLabel("DragMe", 6, 4, 50, 17, -1, $GUI_WS_EX_PARENTDRAG)

    [/autoit]


    Damit kann man dann die Gui verschieben

  • @ progandy,

    Danke für die Lösung. Für meine Zwecke müsste sie folgendermaßen eingesetzt werden:

    [autoit]


    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $frm= GUICreate("Frame", 200, @DesktopHeight-20, 10, 10, $WS_POPUP + $WS_DLGFRAME)
    $LabelDragME = GUICtrlCreateLabel("", 0, 0, 200, @DesktopHeight-20, -1, $GUI_WS_EX_PARENTDRAG)
    $ctrl= GUICtrlCreateButton("Close", 10, 10, 180, 180)
    GUICtrlSetOnEvent($ctrl, "GUI_EVENT_CLOSE")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func GUI_EVENT_CLOSE()
    Exit
    EndFunc

    [/autoit]

    Hierbei verliert jedoch der Button seine Funktion.

    Nächster Versuch:

    [autoit]


    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $frm= GUICreate("Frame", 200, @DesktopHeight-20, 10, 10, $WS_POPUP + $WS_DLGFRAME)
    $ctrl= GUICtrlCreateButton("Close", 10, 10, 180, 180)
    $LabelDragME = GUICtrlCreateLabel("", 0, 0, 200, @DesktopHeight-20, -1, $GUI_WS_EX_PARENTDRAG)
    GUICtrlSetOnEvent($ctrl, "GUI_EVENT_CLOSE")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    WEnd

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

    Func GUI_EVENT_CLOSE()
    Exit
    EndFunc

    [/autoit]

    Hierbei wird der Button zunächst nicht angezeigt. Wenn man mit der Maus über die Stelle fährt, wo der Button sein sollte, wird der Button angezeigt, und ist funktionsfähig. Wird ein anderes Fenster nach vorne geholt, und danach diese GUI, ist der Button wieder weg.

    Welchen Style oder welche Funktion nutze ich, wenn ich Control-Elemente standardmäßig vor einem anderen Control-Element (hier $LabelDragMe) angezeigt bekommen möchte.

    Und: Hat das bereits etwas mit Layern zu tun?

    Viele Grüße und Danke nochmals

  • ||

    Hatte das Problem auch schon. Wenn man Static-Controls nimmt, funktioniert es. Wobei man das Element welches den Hintergrund bedeckt auf $GUI_DISABLE setzen muss. Was wiederum verhindert, das Fenster zu bewegen.


    ||