Gdi+ Slider wollen nicht

  • Heyo,

    mir gelingt es einfach nicht, 2 Slider gleichzeitig funktionsfähig zu erstellen.
    Einzeln gehen sie wunderbar (horizontal/vertikal), aber wenn man mehr
    als einen Slider erstellt, spinnen alle total rum.

    Könnt ihr vielleicht einmal drauf schauen?


  • Auf die schnelle würde ich sagen: "jeder weitere Slider überschreibt die Werte des zuvor erststellten" Die in Zeile 61 Global deklarierten Variablen gehören imho in ein 2 dimensionales Array in der jede Zeile in den Spalten die Werte für den jeweiligen Slider aufnimmt. Daher muß natürlich auch eine ID für jeden Slider verwaltet werden also auch mit ins Array. Eventuell sollten auch Breite und Höhe variabel gehalten werden, also noch 2 Spalten ins Array. Und, und ... Du solltest vor dem Anfangen/Weitermachen dein Konzept überdenken.

    Deine func:

    AutoIt
    Func _MouseOverControl($iControl)
    	Local $aCursor = GUIGetCursorInfo($main_gui)
    	If Not IsArray($aCursor) Then Return False
    	If $aCursor[4] = $iControl Then
    		ConsoleWrite('_MouseOverControl'&$iControl&': TRUE'&@CRLF)
    		Return True
    	EndIf
    EndFunc

    wird kein einziges Mal gecallt, für was ist sie dann im Skript? Selbst wenn du sie aufrufst würde für die Slider kein True zurückgegeben, diese sind keine Controls und auch andere Controls sehe ich nicht im Skript


    zum Thema in einer Func Variablen Global zu definieren, solltest du https://www.autoitscript.com/wiki/Best_codi…es_of_Variables und https://www.autoitscript.com/wiki/Best_codi…Check_directive lesen. Die anderen Teile schaden auch nicht, hilft auf jeden Fall Code zu schreiben, der leicht von anderen gelesen werden kann.


    Schau dich mal bei @UEZ dazu um, der macht eine Menge mit GDI. Würde mich wundern wenn er noch keine Porgressbar gemacht hat.

    mfg (auto)Bert

  • Hey autoBert,

    danke für deine Antwort. Die Variablen in Arrays zu speichern, habe ich schon versucht. Aber das Problem besteht trotzdem.
    Die Funktion _MouseOverControl() hatte ich mal benutzt, weil ich mit Guictrlsetpos() gearbeitet habe, um die Koordinaten
    des Sliders zu berechnen, bevor ich die _PtIsInRect() Funktion gefunden habe.


    Über Gdi Slider habe ich bis jetzt nur ein Beispiel gesehen. GDI+ Slider UDF
    Aber leider nur horizontal.

  • Ich hatte vor langer Zeit was gebastelt. Vielleicht kannst was gebrauchen:

    New Slider

    Ist seit 2013 nicht mehr weiter entwickelt.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Die Zeile einfach auskommentieren und dann sollte es funzen.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯