SLIDER - Aktualisieren der grafischen Anzeige bei Wertänderung klappt nicht...
-
Moin!
Ich habe in meiner Anwendung mehrere Slider (Left, Top, Width, Height), die teilweise voneinander abhängig sind. Mit den Slidern wird ein Rechteck (Scanbereich) gesteuert. Wenn der Left-Slider beispielsweise nach rechts verschoben wird, passe ich den maximalen Bereich des Width-Sliders entsprechend an (per SetMaxRange), so dass die Summe immer die gesamte Breite des Scanners ergibt. Das klappt auch alles wunderbar.
Mein Problem ist, dass zwar der Wert des Sliders meinen Wünschen entsprechend angepasst wird, die grafische Anzeige bleibt jedoch auf dem alten Stand, bis der Slider den Fokus bekommt.
Ich möchte, dass wenn sich der Bereich des Sliders vergrößert, er auch entsprechend nach links verschoben wird (da der aktuelle Wert sich ja nicht ändert, geändert wird in dem Fall ja ein anderer Slider).
Wie kann ich dies realisieren? UpdateWindow habe ich probiert, hat leider keinen Effekt.
Gruß Matze
EDIT: Bitte nicht wundern, wenn ich heute nicht mehr zurückschreibe, ich hab' jetzt Feierabend!
-
Hat denn keiner eine Idee?
Ich habe schon verschiedene Sachen ausprobiert (UpdateWindow, RedrawWindow, diverse SendMessages), jedoch kann ich die Sliders nicht dazu bringen, sich auch nur einen Milimeter (grafisch) zu bewegen, obwohl die Position per SetPos korrekt angepasst wird.
Erst, wenn ich den Slider mit der Maus anklicke, wird die grafische Position schlagartig geändert.
Gruß Matze
-
Bemüht euch nicht, ich hab' die Lösung!
Den Width-Slider kann ich aktualisieren, indem ich in der OnNMCustomdraw-Methode des Left-Sliders die Methode m_SliderWidth.ClearSel(TRUE) aufrufe (Parameter Redraw muss TRUE sein, bei mir zumindest).
Dies habe ich nun nach stundenlanger, erfolgloser Internet-Recherche (auch die MSDN half nicht weiter) einfach mithilfe des T&E-Prinzips herausfinden können. Alles, was irgendwie Sinn machte, wurde durchprobiert! Sicher handelt es sich nur um einen Seiteneffekt der Methode, aber die Hauptsache ist, dass es funktioniert.
Wer sich übrigens fragt, warum ich zu diesem Zweck (maximalen Bereich dynamisch anpassen) nicht die Sel-Funktionen benutze: es war mir wichtig, dass der Benutzer umso genauer steuern kann, je kleiner der maximale Bereich wird. Das ist bei gleichbleibender Größe der Slider-Controls eben nur mit der beschriebenen Methodik möglich.
Gruß Matze