Fenster mit $WS_POPUP veschieben

  • Hallo zusammen,

    Ich habe eine frage und zwar wie kann ich ein fenster mit der $WS_POPUP Funktion veschieben?
    Ich habe schon auch das Beispiel von Ebay_Widget angesehen was im Forum zu finden ist, aber ich finde das ganze viel zu
    Kompliziert.
    Hat da jemand eine Alternative, die einfacher ist?

    Ich bedanke mich schon mal im Voraus!

    2 Mal editiert, zuletzt von m3hm3t (6. Juli 2008 um 21:46)

    • Offizieller Beitrag

    Am einfachsten ist es, ein transparentes Label über die GUI zu legen:

    [autoit]


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

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

    GUICreate("Test", 640, 480, -1, -1, $WS_POPUP)
    GUICtrlCreateLabel('', 0, 0, 640, 480, -1, $GUI_WS_EX_PARENTDRAG)
    GUISetState()

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]
  • Hey danke Oscar!
    Liegt es nur an dem Label oder wie sehe ich das, damit ich das verstehe?

  • Hallo, ich habe da noch ein Problem und zwar kann ich es ja nur unter dem Label veschieben aber wenn ich im leeren Feld drücke und es ziehe dann geht es ja garnicht. Wie ich auch noch bemerkt habe hast du ja auch das Label über das ganze Feld eingestellt dashalb konnte es man auch verschieben.
    Aber wenn ich es jetzt z.B. so schreibe dann bringt es mir nicht viel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #NoTrayIcon

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

    ; Hauptfenster
    GUICreate("Speichern", 400, 400, -1, -1, $WS_POPUP)

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

    ; Menüleiste
    $menu = GUICtrlCreateMenu("Datei")
    $item_oeffnen = GUICtrlCreateMenuItem("Öffnen...", $menu)
    $item_save_as = GUICtrlCreateMenuItem("Speichern unter...", $menu)
    GUICtrlCreateMenuItem("", $menu, -1) ; Hier wird ein Linie durchgezogen
    $item_beenden = GUICtrlCreateMenuItem("Beenden", $menu)

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

    ; Schrift
    $font = "Comic Sans MS"
    $label = GUICtrlCreateLabel("Quelle", 10, 10, 50, 25)
    GUICtrlSetFont($label, 12, 100, 1, $font)
    GUICtrlSetColor($label, 0xfb00500)

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

    ; Edit
    $edit = GUICtrlCreateEdit("", 10, 40, 380, 330, $WS_VSCROLL)
    GUICtrlSetBkColor($edit, 0x000000)
    GUICtrlSetColor($edit, 0xFFFFFF)

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

    ; Damit das Hauptfenster angezeigt wird
    GUISetState()

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

    While 1
    $Msg = GUIGetMsg()

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

    Switch $Msg
    Case $GUI_EVENT_CLOSE, $item_beenden
    Exit
    Case $item_oeffnen
    $open = FileOpenDialog("Öffnen...", @DesktopDir, "Textdokument (*.txt)")
    $read = FileRead($open)
    GUICtrlSetData($edit, $read)
    Case $item_save_as
    $save = FileSaveDialog ( "Speichern unter...", @DesktopDir, "Textdokument (*.txt)")
    If $save Then $save &=".txt" ; Hier wird garantiert das die Datei mit dieser Endung abgespeichert wird
    FileWrite($save, (GUICtrlRead($edit)))
    EndSwitch

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

    WEnd

    [/autoit]

    Kann mir bitte einer helfen.

    7 Mal editiert, zuletzt von m3hm3t (7. Juli 2008 um 18:22)

  • probier mal dies:
    in die While Wend Schleife schreiben :)

    Spoiler anzeigen
    [autoit]

    ;GUI manuell verschieben
    If _IsPressed("01", $dll) Then
    $mousepos = MouseGetPos()
    $winpos = WinGetPos($GUI_titel, "")
    If $mousepos[0] >= $winpos[0] And $mousepos[0] <= ($winpos[0] +$winpos[2]) And _ ;"x"
    $mousepos[1] >= $winpos[1] And $mousepos[1] <= ($winpos[1] +$winpos[3]) Then ;"y"
    Do
    $mousepos2 = MouseGetPos()
    WinMove($GUI_titel, "", $winpos[0]-$mousepos[0]+$mousepos2[0], $winpos[1]-$mousepos[1]+$mousepos2[1])
    Sleep(15)
    Until Not _IsPressed("01", $dll)
    EndIf
    EndIf
    Sleep(15)

    [/autoit]
  • Danke, :)
    aber so ein langer und komplizierter Code nur um das Fenster verschieben zu können.

    3 Mal editiert, zuletzt von m3hm3t (7. Juli 2008 um 19:59)