Statusbar verändert ihre Größe nicht mit.

  • Hallo alle miteinander,

    ich habe folgendes Problemchen.
    Ich erstelle mit Koda eine Form, in dieser eine Statusbar.
    Dann setze ich die Einstellung der Form so das sie man ihre Größe ändern kann.

    Wenn ich nun die Größe ändere, passt sich leider die Statusbar nicht mit an. :(

    Hat dazu jemand eine Idee?

    PS: SBEARS_SIZEGRIP ist an

    EDITH: Gelöst

    Einmal editiert, zuletzt von Spunky (27. März 2010 um 19:40)

  • Sorry ^^

    Spoiler anzeigen

    #include
    #include
    #include

    #Region ### START Koda GUI section ### Form=Test.kxf
    $frm_Main = GUICreate("frm_Main", 405, 294, 302, 218, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $stb_Main = _GUICtrlStatusBar_Create($frm_Main, -1, "", $SBARS_SIZEGRIP)
    Dim $stb_Main_PartsWidth[2] = [150, 200]
    _GUICtrlStatusBar_SetParts($stb_Main, $stb_Main_PartsWidth)
    _GUICtrlStatusBar_SetText($stb_Main, "", 0)
    _GUICtrlStatusBar_SetText($stb_Main, "", 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    EndSwitch
    WEnd

  • Da fehlen ja die Includes. 8|

    Setzt den Code mal mit [ autoit ] & [ /autoit ]. Wäre übersichtlicher.

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • So geht's ...

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiStatusbar.au3>
    #include <Constants.au3>

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

    $frm_Main = GUICreate("frm_Main", 405, 294, 302, 218, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $stb_Main = _GUICtrlStatusBar_Create($frm_Main, -1, "", $SBARS_SIZEGRIP)
    Dim $stb_Main_PartsWidth[2] = [150, 200]
    _GUICtrlStatusBar_SetParts($stb_Main, $stb_Main_PartsWidth)
    _GUICtrlStatusBar_SetText($stb_Main, "", 0)
    _GUICtrlStatusBar_SetText($stb_Main, "", 1)

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

    GUIRegisterMsg ($WM_SIZE, "OnSize")

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

    GUISetState(@SW_SHOW)

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func OnSize ($hwnd, $message, $wParam, $lParam)

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

    WinMove ( _
    $stb_Main, _
    0, _
    0, 0, 0, 0 _
    )

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

    Return 0

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

    EndFunc

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


    EDIT:
    Na gut, genau genommen so ... ;)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiStatusbar.au3>
    #include <Constants.au3>

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

    Global $user32dll = DllOpen ("user32.dll")

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

    Global $NULL = Ptr (0)

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

    $frm_Main = GUICreate("frm_Main", 405, 294, 302, 218, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $stb_Main = _GUICtrlStatusBar_Create($frm_Main, -1, "", $SBARS_SIZEGRIP)
    Dim $stb_Main_PartsWidth[2] = [150, 200]
    _GUICtrlStatusBar_SetParts($stb_Main, $stb_Main_PartsWidth)
    _GUICtrlStatusBar_SetText($stb_Main, "", 0)
    _GUICtrlStatusBar_SetText($stb_Main, "", 1)

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

    GUIRegisterMsg ($WM_SIZE, "OnSize")

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

    GUISetState(@SW_SHOW)

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func OnSize ($hwnd, $message, $wParam, $lParam)

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

    Local $hwdp

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

    $hwdp = BeginDeferWindowPos (1) ; Anzahl der Steuerelemente

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

    If ($hwdp) Then _
    $hwdp = DeferWindowPos ( _
    $hwdp, _
    $stb_Main, _ ; Handle des Steuerelements
    $NULL, _
    0, 0, 0, 0, _
    BitOR ($SWP_NOZORDER, $SWP_NOOWNERZORDER, $SWP_NOACTIVATE) _
    )

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

    If ($hwdp) Then _
    EndDeferWindowPos ($hwdp)

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

    Return 0

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

    EndFunc

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

    Func BeginDeferWindowPos ($nNumWindows)

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

    Local $aRes = DllCall ($user32dll, 'ptr', 'BeginDeferWindowPos', _
    'int', $nNumWindows)
    Return $aRes[0]

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

    EndFunc

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

    Func DeferWindowPos ($hWinPosInfo, $hWnd, $hWndInsertAfter, $x, $y, $cx, $cy, $uFlags)

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

    Local $aRes = DllCall ($user32dll, 'ptr', 'DeferWindowPos', _
    'ptr', $hWinPosInfo, _
    'hwnd', $hWnd, _
    'hwnd', $hWndInsertAfter, _
    'int', $x, _
    'int', $y, _
    'int', $cx, _
    'int', $cy, _
    'uint', $uFlags)
    Return $aRes[0]

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

    EndFunc

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

    Func EndDeferWindowPos ($hWinPosInfo)

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

    Local $aRes = DllCall ($user32dll, 'int', 'EndDeferWindowPos', _
    'ptr', $hWinPosInfo)
    Return $aRes[0]

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

    EndFunc

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


    Gruß
    Greenhorn


    Einmal editiert, zuletzt von Greenhorn (27. März 2010 um 18:58)

  • Alter Schwede... Und ich dachte ich hab bloß irgendwo nen Hacken im Koda übersehen. :wacko:

    • Offizieller Beitrag

    Warum eigentlich so viel Aufwand? Das geht doch viel kürzer.

    Spoiler anzeigen
    [autoit]

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

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

    $frm_Main = GUICreate("frm_Main", 405, 294, 302, 218, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $stb_Main = _GUICtrlStatusBar_Create($frm_Main, -1, "", $SBARS_SIZEGRIP)
    Dim $stb_Main_PartsWidth[2] = [150, 200]
    _GUICtrlStatusBar_SetParts($stb_Main, $stb_Main_PartsWidth)
    _GUICtrlStatusBar_SetText($stb_Main, "", 0)
    _GUICtrlStatusBar_SetText($stb_Main, "", 1)

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

    GUIRegisterMsg ($WM_SIZE, "WM_SIZE")

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

    GUISetState(@SW_SHOW)

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func WM_SIZE()
    _GUICtrlStatusBar_Resize($stb_Main)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_EXITSIZEMOVE

    [/autoit]

    Edit: Return $GUI_RUNDEFMSG noch hinzugefügt. ;)
    Edit2: Return $GUI_RUNDEFMSG in die richtige Zeile verschoben. Danke, BugFix. :thumbup:

  • Danke Raupi. :)

    Wird das WM_SIZE permanent ausgeführt, oder nur wenn ich tatsächlich die Größe ändere?

    Im übrigen funktioniert es bei mir nur wenn ich die Zeile 30 des Codes weg lasse. Also quasi so.

    Spoiler anzeigen
    [autoit]


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

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

    $frm_Main = GUICreate("frm_Main", 405, 294, 302, 218, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $stb_Main = _GUICtrlStatusBar_Create($frm_Main, -1, "", $SBARS_SIZEGRIP)
    Dim $stb_Main_PartsWidth[2] = [150, 200]
    _GUICtrlStatusBar_SetParts($stb_Main, $stb_Main_PartsWidth)
    _GUICtrlStatusBar_SetText($stb_Main, "", 0)
    _GUICtrlStatusBar_SetText($stb_Main, "", 1)

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

    GUIRegisterMsg ($WM_SIZE, "WM_SIZE")

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

    GUISetState(@SW_SHOW)

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func WM_SIZE()
    _GUICtrlStatusBar_Resize($stb_Main)
    EndFunc ;==>WM_EXITSIZEMOVE

    [/autoit]
    • Offizieller Beitrag

    Da hatte Raupi versehentlich das "Return $GUI_RUNDEFMSG" außerhalb der Funktion angesiedelt ;)
    Erforderlich ist es, nicht wglassen.
    So muß es richtig sein:

    [autoit]

    Func WM_SIZE()
    _GUICtrlStatusBar_Resize($stb_Main)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_EXITSIZEMOVE

    [/autoit]
  • So steht es auch in der Hilfe.
    Komisch das es da auch ohne geht.. ?(


    Es ist nicht zwingend $GUI_RUNDEFMSG zurückzugeben, Du kannst auch den Wert zurückgeben, den Windows für die entsprechende Nachricht erwartet.
    Das wäre bei WM_SIZE Null.
    Benutzt Du jedoch GUICtrlSetRezising () für andere Steuerelemente, dann solltest Du explizit $GUI_RUNDEFMSG zurückgeben.

    Gruß
    Greenhorn


    • Offizieller Beitrag

    BugFix hast natürlich recht. Hab es in meinem verschlafenen Kopf falsch reineditiert. 8| Man sollte nicht im Halbschlaf posten. :cursing:

    Spoiler anzeigen
    [autoit]

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

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

    $frm_Main = GUICreate("frm_Main", 405, 294, 302, 218, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $stb_Main = _GUICtrlStatusBar_Create($frm_Main, -1, "", $SBARS_SIZEGRIP)
    Dim $stb_Main_PartsWidth[2] = [150, 200]
    _GUICtrlStatusBar_SetParts($stb_Main, $stb_Main_PartsWidth)
    _GUICtrlStatusBar_SetText($stb_Main, "", 0)
    _GUICtrlStatusBar_SetText($stb_Main, "", 1)

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

    GUIRegisterMsg ($WM_SIZE, "WM_SIZE")

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

    GUISetState(@SW_SHOW)

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func WM_SIZE()
    _GUICtrlStatusBar_Resize($stb_Main)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_EXITSIZEMOVE

    [/autoit]