Schieberegler(Slider) mit sehr großem Wertebereich

M1cha

Grünschnabel
Hallo,

ich bin neu im Thema C++ und nutze die WINAPI(keine MFC).
ich habe einen Schieberegler erstellt, dem ich einen sehr großen Wertebereich zuweisen muss(1090000000 bis 1130000000). Allerdings regelt der Slider bei diesen Werten zwischen 5248 und 28288. Mit kleinen Bereichen wie(0-100) läuft das dagegen super.
Hier ist mein Code:
Code:
SendMessage(GetDlgItem(hwnd, 1031), TBM_SETRANGE, 1, MAKELONG(1090000000, 1130000000));

Ich hoffe, dass das ganze nur ein simpler Anfängerfehler ist, und ihr mir helfen könnt :D
Viele Grüße, M1cha
 
Hallo,
warum nimmst du nicht 0-100, interpretierst das als Prozentzahl und überträgst diese Zahl in deinen Wertebereich?

Das Zahlen von 5000-20000 rauskommen, liegt an dem von sheel erwähnten Wertebereich (bei Werten darüber fängt er wieder beim niedrigsten Wert im regulären Wertebereich an, geht den Wertebereich solange dann immer wieder durch, bis er die komplette Zahl "abgetragen" hat; hoffe das war verständlich ;))

lg
kickerxy123
 
warum nimmst du nicht 0-100, interpretierst das als Prozentzahl und überträgst diese Zahl in deinen Wertebereich?
Genau das habe ich jetzt gemacht - funktioniert super, danke!!

Ich hätte da noch eine Kleinigkeit: ich berechne die Prozentzahl mit folgender Formel:
Code:
((FLOAT)100/40000000*((INT)dwValue-1090000000)))
Damit bekomme ich eine Zahl mit dem Datentyp FLOAT, für den Slider brauche ich jedoch INT oder LPARAM.

Wenn als Ergebnis 100 rauskommt, macht mir die Umwandlung daraus jedoch eine 99. Wo liegt der Fehler?

Viele Grüße und Frohe Weihnachten, M1cha
 
Von FLOAT zu INT wird abgerundet (Nachkommastellen werden abgeschnitten). Addiere vorher noch 0.5f zu der Zahl, dann sollte 100% angezeigt werden können.
 
Hat super funktioniert, danke dafür!
Edit: wofür steht das f eigenlich?
 
Zuletzt bearbeitet:
Zurück