CSpinButtonCtrl "spinnt"
-
Also, ich habe etwas mit diesem Steuerelement experimentiert, und bin auf einen Bug oder so gestoßen, den ich nicht umgehen kann.
Ich initialisiere das "Spin Control" Steuerelement mit SetRange32(-50, 50). Neue Werte, also wenn der Benutzter auf einen der beiden Pfeile klickt, hole ich mir, wenn die UDN_DELTAPOS Nachricht gesendet wird (da eine "Clicked" Nachricht fehlt). Dann rufe ich GetPos32() auf, um die aktuelle Position zu bekommen.
Wenn ich jetzt auf den nach-oben-Pfeil klicke, ist noch alles normal. Aber wenn ich dann auf den nach-unten-Pfeil klicke, wird die Position, also der Wert, den GetPos32() liefert, immer noch inkrementiert, anstatt dass 1 abgezogen würde. Wenn ich daraufhin nochmals auf den nach-unten-Pfeil klicke, funktioniert es wieder und die Position wird dekrementiert.
Das selbe passiert auch umgekehrt, also wenn ich jetzt auf den nach-oben-Pfeil klicke, wird die Position erstmal weiter dekrementiert.
O --> O --> U --> U --> U --> O --> O (O ist der nach-oben-Pfeil, U ist nach unten)
0 --> 1 --> 2 --> 1 --> 0 --> -1 --> 0 (das sind die resultierenden Positionen)Bei der UDN_DELTAPOS-Nachricht wird auch ein Zeiger auf eine Struktur mitgeschickt, womit ich die neue Position und den Positionsunterschied zur vorherigen Position direkt ablesen kann.
Hier ist es wieder das selbe mit der Position, aber der Positionsunterschied stimmt, also -1 wenn ich nach unten klicke, 1, wenn ich nach oben klicke.Weiß evtl. jemand was darüber?
Ach ja, noch etwas: Kann es sein, dass teilweise Nachrichten in VS2008 im Vergleich zu VC++ 6.0 fehlen? Also ich meine Steuerelementnachrichten, wie Drag&Drop.
Genauso kann konnte ich bei vielen Steuerelement in VC++ 6.0 noch Variablen zuordnen, die dann automatisch in der DoDataExchange-Funktion aktualisiert wurden. In VS2008 geht das z.B. beim "Spin-Control" nicht mehr.Danke im voraus,
Gugi