Wie füge ich einer Gui die Resize-Ecke hinzu?

  • Ich versuche einem Fenster folgende Ecke zu verpassen:

    [Blockierte Grafik: http://www.abload.de/img/eckequodx.jpg]

    Leider finde ich weder in der Hilfe noch bei Google irgendwelche Hinweise darauf wie das in Autoit funktionieren soll.Ich kann die Gui zwar mit
    $WS_SizeBox erstellen und dort am Rand anfassen um die Grösse zu ändern, aber mir geht es speziell um diese Ecke.

    cu, Lesato!

    Einmal editiert, zuletzt von Lesato (30. Dezember 2012 um 14:39)

    • Offizieller Beitrag

    Welchen Sinn soll die Ecke haben, wenn du dessen Funktion nicht benutzt?

    Jetzt verstehe ich was du meinst. das ist das Sizegrip der Statusbar.
    Sieht aber mit Aero behindert aus und die Anpassung der Statusbar müßtest du selbst scripten.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>
    #Region - Timestamp
    ; 2012-12-30 11:35:09
    #EndRegion

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

    Local $hGUI
    Local $aText[3] = ["Linksbündig", @TAB & "Zentriert", @TAB & @TAB & "Rechtsbündig"] ; Abschnittstexte
    Local $aParts[3] = [100, 175, -1] ; Endpositionen der Abschnitte

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

    ; Erstellt eine GUI
    $hGUI = GUICreate("StatusBar: Erzeugen (Beispiel 3)", 400, 300,-1,-1,$WS_SIZEBOX)

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

    ;===============================================================================
    ; Legt die Abschnitte und die Texte fest
    $hStatus = _GUICtrlStatusBar_Create($hGUI, $aParts, $aText,$SBARS_SIZEGRIP )
    ;===============================================================================

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

    GUISetState()
    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]
  • Im englischen Forum hab ich gerade noch diese Version von ProgAndy entdeckt:

    Spoiler anzeigen
    [autoit]

    #include<WindowsConstants.au3>
    #include<GUIConstantsEx.au3>
    Global $hGUI = GUICreate("Sizetest", default, default, default, default, $WS_SIZEBOX)
    GUIRegisterMsg($WM_PAINT, "_MY_WM_PAINT")
    GUISetState()
    While GUIGetMsg()<>-3
    WEnd

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

    Func _MY_WM_PAINT($hWnd, $uMsg, $wParam, $lParam)
    ; Init paint
    Local $tPS = DllStructCreate("ptr hdc; BOOL fErase;long rcPaint[4]; BOOL fRestore; BOOL fIncUpdate; BYTE rgbReserved[32];")
    Local $aPaint = DllCall("user32.dll", "handle", "BeginPaint", "hwnd", $hWnd, "ptr", DllStructGetPtr($tPS))
    If @error Then Return $GUI_RUNDEFMSG
    Local $hDC = $aPaint[0]

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

    ; Draw
    Local $pos = WinGetClientSize($hWnd)
    DrawFrameControl($hDC, $pos[0]-10, $pos[1]-10, $pos[0], $pos[1])

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

    ; Finish Paint
    DllCall("user32.dll", "bool", "EndPaint", "hwnd", $hWnd, "ptr", $aPaint[2])

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

    Return $GUI_RUNDEFMSG
    EndFunc
    Func DrawFrameControl($hDC, $nLeft, $nTop, $nRight, $nBottom)
    Local Const $DFC_SCROLL = 3,$DFCS_SCROLLSIZEGRIP = 8
    Local $stRect = DllStructCreate("int;int;int;int")

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

    DllStructSetData($stRect, 1, $nLeft)
    DllStructSetData($stRect, 2, $nTop)
    DllStructSetData($stRect, 3, $nRight)
    DllStructSetData($stRect, 4, $nBottom)

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

    DllCall("user32.dll", "int", "DrawFrameControl", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "int", $DFC_SCROLL, "int", $DFCS_SCROLLSIZEGRIP)

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

    $stRect = 0
    EndFunc ;==>DrawFrameControl

    [/autoit]


    Damit ist mein Problem gelöst.
    Thx an Alle!

    cu, Lesato!