Problem mit GDIplus-Progress

  • Hallo,

    Ich habe folgendes Problem:
    Ich habe eine Progressbar mit der UDF von Progandy erstellt, hier
    aber der progress bleibt bei 3% stehen...
    das ganze script ist eigentlich mehr eine übung
    hier der code

    Spoiler anzeigen
    [autoit]


    #include-once
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <GuiStatusBar.au3>
    #include <String.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIpProgress.au3>
    #RequireAdmin
    #NoTrayIcon
    ;Scripted by Padmak, http://www.autoit.de
    Local $StatusBar1_PartsWidth[4] = [85, 225, 380, 200]
    _GDIPlus_Startup()
    $Form1 = GUICreate("Slider Test", 540, 300, -1, -1)
    $hWnd = WinGetHandle("Slider Test")
    $Slider1 = GUICtrlCreateSlider(15, 15, 494, 45)
    $Progress1 = GUICtrlCreateProgress(15, 64, 494, 17)
    $slider = GUICtrlRead($Slider1)
    $Progress1 = _ProgressCreate(15, 64, 494, 17)
    _ProgressSetText($Progress1, "Aktueller Stand: " & $slider & " %")
    ;~ _ProgressSet($Progress1, 50)
    $Label1 = GUICtrlCreateLabel("Aktueller Stand in %:", 15, 96, 101, 17)
    $Input1 = GUICtrlCreateInput("", 15, 120, 97, 21)
    $Label2 = GUICtrlCreateLabel("Selbst ändern:", 152, 96, 72, 17)
    $Input2 = GUICtrlCreateInput("", 152, 120, 73, 21)
    $Button1 = GUICtrlCreateButton("Go", 264, 120, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Beenden", 344, 120, 75, 25, 0)
    $Label3 = GUICtrlCreateLabel("0 %", 15, 160, 61, 17)
    $Label4 = GUICtrlCreateLabel("", 15, 184, 500, 28)
    $slider = GUICtrlRead($Slider1)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    GUICtrlCreateUpdown($Input2)
    GUICtrlSetLimit($Input2, 100, 0)
    GUICtrlSetData($Input2, "0")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle %: " & $slider)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle Uhrzeit: " & @HOUR & ":" & @MIN & ":" & @SEC, 1)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelles Datum: " & @MDAY & ":" & @MON & ":" & @YEAR, 2)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktueller Benutzer: " & @UserName, 3)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 1)
    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)
    _GDIPlus_PenSetWidth($hPen, 6)
    $hPenBk = _GDIPlus_PenCreate(_GetBkColor(), 2)
    _GDIPlus_PenSetWidth($hPenBk, 6)
    GUISetState()

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

    While 1
    If WinActive("Slider Test") Then
    HotKeySet("{enter}", "Button")
    Else
    HotKeySet("{enter}")
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    _GDIPlus_GraphicsClear($hGraphic)
    _GDIPlus_Shutdown()
    Case $Button1
    Button()
    Case $Button2
    Exit
    EndSwitch
    $slider = GUICtrlRead($Slider1)
    $test = _ProgressGet($Progress1)
    $data = GUICtrlRead($Input2)
    If $data > 100 Then
    GUICtrlSetData($Input2, 100)
    ElseIf $data < 0 Then
    GUICtrlSetData($Input2, 0)
    EndIf
    If $slider <> $test Then
    ToolTip($test, 0, 0)
    _ProgressSet($Progress1, $Slider1)
    _ProgressSetText($Progress1, "Aktueller Stand: " & $slider & " %")
    GUICtrlSetData($Input1, $slider)
    GUICtrlSetData($Input2, $slider)
    GUICtrlSetData($Label3, $slider & " %")
    GUICtrlSetData($Label4, _StringRepeat("|", $slider))
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle %: " & $slider)
    EndIf
    Sleep(50)
    $sliderunten = 7 + ($slider * 5.25)
    $slideroben = 531 - ($slider * 5.25)
    $faktorrechts = $slider * 2.48
    $faktorlinks = $slider * 2.48
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle Uhrzeit: " & @HOUR & ":" & @MIN & ":" & @SEC, 1)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelles Datum: " & @MDAY & "." & @MON & "." & @YEAR, 2)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktueller Benutzer: " & @UserName, 3)
    _Refresh($sliderunten, $slideroben, $faktorrechts, $faktorlinks)
    WEnd
    Func _GetBkColor()
    Local $Color = Hex(BitAND(BitShift(String(Binary(_WinAPI_GetSysColor($COLOR_3DFACE))), 8), 0xFFFFFF))
    Return "0xFF" & StringTrimLeft($Color, 2)
    EndFunc ;==>_GetBkColor
    Func _Refresh($iSliderUnten, $iSliderOben, $iSliderRechts, $iSliderLinks)
    _GDIPlus_GraphicsDrawLine($hGraphic, 2, 251, $iSliderUnten - 2, 251, $hPen);Slider unten
    _GDIPlus_GraphicsDrawLine($hGraphic, $iSliderUnten - 6, 251, 530, 251, $hPenBk); Slider unten
    _GDIPlus_GraphicsDrawLine($hGraphic, 526, 254, 526, 250 - $iSliderRechts, $hPen); Slider rechts
    _GDIPlus_GraphicsDrawLine($hGraphic, 526, 5, 526, 256 - $iSliderRechts, $hPenBk); Slider rechts
    _GDIPlus_GraphicsDrawLine($hGraphic, 529, 5, $iSliderOben, 5, $hPen); Slider oben
    _GDIPlus_GraphicsDrawLine($hGraphic, $iSliderOben, 5, 5, 5, $hPenBk); Slider oben
    _GDIPlus_GraphicsDrawLine($hGraphic, 5, 2, 5, 2 + $iSliderLinks, $hPen); Slider links
    _GDIPlus_GraphicsDrawLine($hGraphic, 5, 248, 5, 0 + $iSliderLinks, $hPenBk); Slider links
    EndFunc ;==>_Refresh
    Func Button()
    $data = GUICtrlRead($Input2)
    GUICtrlSetData($Slider1, $data)
    _ProgressSet($Progress1, $data)
    _ProgressSetText($Progress1, "Aktueller Stand: " & $slider & " %")
    GUICtrlSetData($Input1, $data)
    GUICtrlSetData($Input2, $data)
    GUICtrlSetData($Label4, _StringRepeat("|", $data))
    $sliderunten = 8 + ($data * 5.2)
    $slideroben = 531 - ($data * 5.25)
    $faktorrechts = $data * 2.48
    $faktorlinks = $data * 2.48
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle %: " & $data)
    _Refresh($sliderunten, $slideroben, $faktorrechts, $faktorlinks)
    EndFunc ;==>Button

    [/autoit]


    ich habe vista, wahrscheinlich ist es deshalb...

    Padmak

    Einmal editiert, zuletzt von Padmak (7. Februar 2009 um 18:53)

    • Offizieller Beitrag

    Du hast ein Fehler in Zeile 77, das sollte so heißen :

    [autoit]

    _ProgressSet($Progress1, $Slider)

    [/autoit]

    Edit hier mal das ganze Script :

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <GuiStatusBar.au3>
    #include <String.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIpProgress.au3>
    #RequireAdmin
    #NoTrayIcon
    ;Scripted by Padmak, http://www.autoit.de
    Global $StatusBar1_PartsWidth[4] = [85, 225, 380, 200],$slider

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

    _GDIPlus_Startup()
    $Form1 = GUICreate("Slider Test", 540, 300, -1, -1)
    $hWnd = WinGetHandle("Slider Test")
    $Slider1 = GUICtrlCreateSlider(15, 15, 494, 45)
    $Progress1 = GUICtrlCreateProgress(15, 64, 494, 17)
    $slider = GUICtrlRead($Slider1)
    $Progress1 = _ProgressCreate(15, 64, 494, 17)
    _ProgressSetText($Progress1, "Aktueller Stand: " & $slider & " %")
    ;~ _ProgressSet($Progress1, 50)
    $Label1 = GUICtrlCreateLabel("Aktueller Stand in %:", 15, 96, 101, 17)
    $Input1 = GUICtrlCreateInput("", 15, 120, 97, 21)
    $Label2 = GUICtrlCreateLabel("Selbst ändern:", 152, 96, 72, 17)
    $Input2 = GUICtrlCreateInput("", 152, 120, 73, 21)
    $Button1 = GUICtrlCreateButton("Go", 264, 120, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Beenden", 344, 120, 75, 25, 0)
    $Label3 = GUICtrlCreateLabel("0 %", 15, 160, 61, 17)
    $Label4 = GUICtrlCreateLabel("", 15, 184, 500, 28)
    GUICtrlSetFont(-1, 10, 800, 0, "Comic Sans MS")
    GUICtrlCreateUpdown($Input2)
    GUICtrlSetLimit($Input2, 100, 0)
    GUICtrlSetData($Input2, "0")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle %: " & $slider)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle Uhrzeit: " & @HOUR & ":" & @MIN & ":" & @SEC, 1)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelles Datum: " & @MDAY & ":" & @MON & ":" & @YEAR, 2)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktueller Benutzer: " & @UserName, 3)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 1)
    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)
    _GDIPlus_PenSetWidth($hPen, 6)
    $hPenBk = _GDIPlus_PenCreate(_GetBkColor(), 2)
    _GDIPlus_PenSetWidth($hPenBk, 6)
    GUISetState()

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

    While 1
    If WinActive("Slider Test") Then
    HotKeySet("{enter}", "Button")
    Else
    HotKeySet("{enter}")
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    _GDIPlus_GraphicsClear($hGraphic)
    _GDIPlus_Shutdown()
    Case $Button1
    Button()
    Case $Button2
    Exit
    EndSwitch
    $slider = GUICtrlRead($Slider1)
    $test = _ProgressGet($Progress1)
    $data = GUICtrlRead($Input2)
    If $data > 100 Then
    GUICtrlSetData($Input2, 100)
    ElseIf $data < 0 Then
    GUICtrlSetData($Input2, 0)
    EndIf
    If $slider <> $test Then
    ToolTip($test, 0, 0)
    _ProgressSet($Progress1, $Slider)
    _ProgressSetText($Progress1, "Aktueller Stand: " & $slider & " %")
    GUICtrlSetData($Input1, $slider)
    GUICtrlSetData($Input2, $slider)
    GUICtrlSetData($Label3, $slider & " %")
    GUICtrlSetData($Label4, _StringRepeat("|", $slider))
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle %: " & $slider)
    EndIf
    Sleep(50)
    $sliderunten = 7 + ($slider * 5.25)
    $slideroben = 531 - ($slider * 5.25)
    $faktorrechts = $slider * 2.48
    $faktorlinks = $slider * 2.48
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle Uhrzeit: " & @HOUR & ":" & @MIN & ":" & @SEC, 1)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelles Datum: " & @MDAY & "." & @MON & "." & @YEAR, 2)
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktueller Benutzer: " & @UserName, 3)
    _Refresh($sliderunten, $slideroben, $faktorrechts, $faktorlinks)
    WEnd
    Func _GetBkColor()
    Local $Color = Hex(BitAND(BitShift(String(Binary(_WinAPI_GetSysColor($COLOR_3DFACE))), 8), 0xFFFFFF))
    Return "0xFF" & StringTrimLeft($Color, 2)
    EndFunc ;==>_GetBkColor
    Func _Refresh($iSliderUnten, $iSliderOben, $iSliderRechts, $iSliderLinks)
    _GDIPlus_GraphicsDrawLine($hGraphic, 2, 251, $iSliderUnten - 2, 251, $hPen);Slider unten
    _GDIPlus_GraphicsDrawLine($hGraphic, $iSliderUnten - 6, 251, 530, 251, $hPenBk); Slider unten
    _GDIPlus_GraphicsDrawLine($hGraphic, 526, 254, 526, 250 - $iSliderRechts, $hPen); Slider rechts
    _GDIPlus_GraphicsDrawLine($hGraphic, 526, 5, 526, 256 - $iSliderRechts, $hPenBk); Slider rechts
    _GDIPlus_GraphicsDrawLine($hGraphic, 529, 5, $iSliderOben, 5, $hPen); Slider oben
    _GDIPlus_GraphicsDrawLine($hGraphic, $iSliderOben, 5, 5, 5, $hPenBk); Slider oben
    _GDIPlus_GraphicsDrawLine($hGraphic, 5, 2, 5, 2 + $iSliderLinks, $hPen); Slider links
    _GDIPlus_GraphicsDrawLine($hGraphic, 5, 248, 5, 0 + $iSliderLinks, $hPenBk); Slider links
    EndFunc ;==>_Refresh
    Func Button()
    $data = GUICtrlRead($Input2)
    GUICtrlSetData($Slider1, $data)
    $slider = GuiCtrlRead($Slider1)
    _ProgressSet($Progress1, $data)
    _ProgressSetText($Progress1, "Aktueller Stand: " & $slider & " %")
    GUICtrlSetData($Input1, $data)
    GUICtrlSetData($Input2, $data)
    GUICtrlSetData($Label4, _StringRepeat("|", $data))
    $sliderunten = 8 + ($data * 5.2)
    $slideroben = 531 - ($data * 5.25)
    $faktorrechts = $data * 2.48
    $faktorlinks = $data * 2.48
    _GUICtrlStatusBar_SetText($StatusBar1, "Aktuelle %: " & $data)
    _Refresh($sliderunten, $slideroben, $faktorrechts, $faktorlinks)
    EndFunc ;==>Button

    [/autoit]