Fenster verschieben und Resizen

  • Hiho,

    2 Probs:

    1. ich habe ein fesnter mit folgenden styles

    [autoit]

    $gui = GUICreate("", $w, $h, $x, $y, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), $WS_EX_TOOLWINDOW)

    [/autoit]

    wie kann ich das fenster jetzt verschieben? im mom geht das nur übers resizen, ist zwar ok, aber nicht soooo praktisch. mit guisetstyle habe ich schon rumprobiert, von oben genannten style auf den standardstyle zu springen, in der hoffnung, dass ein fensterkopf erscheint. das passiert zwar nicht, aber ich kann das fenster trotzdem verschieben. jedoch kann ich den style nicht mehr auf den von oben zurücksetzten, ka wieso.

    2. im gleichen fenster habe ich ein listview und ein editfeld. wenn ich das fenster nun resize, wird der abstand zw den beiden ctrl immer größer und kleiner. kann man das machen, dass der gleich bleibt?

    [autoit]

    $gui = GUICreate("", $w, $h, $x, $y, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), $WS_EX_TOOLWINDOW)
    $list = GUICtrlCreateListView("", 0, 0, $w, $h - 51, BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER)
    $edit = GUICtrlCreateEdit("", 0, 200, $w + 20, $h - 180, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $WS_VSCROLL, $WS_HSCROLL))
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHCENTER)

    [/autoit]
    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <SendMessage.au3>

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

    #region - GUI Create
    $GUI = GUICreate('dd',-1,-1,-1,-1,BitOR($WS_POPUPWINDOW, $WS_THICKFRAME), BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOOLWINDOW))
    GUICtrlCreateLabel("Label",10,10,100,200)
    GUICtrlSetBkColor(-1,0x999999)
    GUICtrlCreateButton("Btn",10,220,50,25)
    ;~ GUISetOnEvent($GUI_EVENT_PRIMARYDOWN,"_Prim")
    GUISetState()
    #endregion

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $GUI_EVENT_PRIMARYDOWN
    _SendMessage($GUI,$WM_SYSCOMMAND,0xF012,0)
    EndSelect
    WEnd
    #endregion

    [/autoit]
  • thx bert, wenn ich die editbox $GUI_DOCKHEIGHT setze und die listbox $GUI_DOCKBOTTOM, dann klappt es =)

    fehlt nur noch was, zum verschieben des fensters. GuiSetStyle wäre ja ok, wenn man zw 2 Styles switchen könnte (einer mit Title, einer ohne Title) ... aber das scheint das Tool nicht zu checken.

    EDIT:

    habs jetzt mitm flag gemacht, dann kann er weinigstens nicht meckern

    [autoit]

    Func _ToogleMain()
    If $Style = True Then
    WinActivate($gui)
    _Win_SetClickThrough($gui, "", False)
    GUISetStyle(BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU), -1, $gui)
    $Style = False
    Else
    _Win_SetClickThrough($gui, "", True)
    GUISetStyle(BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), -1, $gui)
    $Style = True
    EndIf
    EndFunc

    [/autoit]

    das fenster kann danach verschoben werden, auch wenn kein TITLE da ist.

  • Hallo sc4ry,

    zum verschieben per Befehl kannst du ja WINMOVE, hier ist ein Beispiel in dem Micha_he zeigt wie ein Child-Fenster automatisch mit dem Parent-Fenster mit verschoben wird,

    mfg (Auto)Bert

  • Hallo sc4ry,

    WinMove funktioniert auch mit $hwnd, wie du am Beispiel von Micha_he erkennen kannst. Funktioniert einwandfrei mit selbst erstellten Fenstern,

    mfg (Auto)Bert

  • ehrlich gesagt versteh ich das nicht =/

    kann ich damit dieses fenster verschieben?

    [autoit]

    $gui = GUICreate("", $w, $h, $x, $y, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), $WS_EX_TOOLWINDOW)
    $list = GUICtrlCreateListView("", 0, 1, $w, $h - 72, BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKBOTTOM)
    $Columns = IniReadSection("Settings.ini", "Columns")
    If Not @error Then
    For $i = 1 To $Columns[0][0]
    _GUICtrlListView_AddColumn($list, $Columns[$i][0], $Columns[$i][1])
    Next
    Else
    For $i = 1 To 4
    _GUICtrlListView_AddColumn($list, "Spalte " & $i, 100)
    IniWrite("Settings.ini", "Columns", "Spalte " & $i, "100")
    Next
    EndIf
    $edit = GUICtrlCreateEdit("", 0, 180, $w + 20, $h - 160, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $WS_VSCROLL, $WS_HSCROLL))
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT )

    [/autoit]
  • Hallo sc4ry,

    mit WinMove kannst du es verschieben, z.B auch so:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt('GUIOnEventMode', 1)

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

    Local $hMainGui = GUICreate("Verschieben von PopUpWindow", 400, 280, 140, 150, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), $WS_EX_TOOLWINDOW)
    ;GUICreate("Testaufruf für EditBox", 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    Local $hlblZahl = GUICtrlCreateLabel("Lässt sich über den Button verschieben", 10, 10, 200, 25)
    GUICtrlCreateButton('&100 nach rechts', 220, 10, 150, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_rechts')
    Local $hbtnFocused = GUICtrlCreateButton("Be&enden", 220, 40, 150, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    GUICtrlSetOnEvent(-1, '_End')
    GUISetState()

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

    While 1
    Sleep(120)
    WEnd

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

    Func _End()
    GUIDelete($hMainGui)
    Exit
    EndFunc ;==>_End

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

    Func _rechts() ;<--------------------- veschiebt nach rechts
    Local $aPosOld
    $aPosOld = WinGetPos($hMainGui)
    WinMove($hMainGui,"",$aPosOld[0]+100,$aPosOld[1],$aPosOld[2],$aPosOld[3])
    EndFunc

    [/autoit]

    weis zwar nicht wie sinnvoll das ist, aber es geht (hab mein eigenes genommen)

    mfg (Auto)Bert