CSpinButtonCtrl::GetPos() liefert veralteten Wert
-
Hallo,
jetzt hab ich nochmal ein Problem mit den MFC.
Ich hab ein CSpinButtonCtrl.
Ich initialisier es mit setRange32(0,15) und setPos(0)
Ausserdem fang ich die UDN_DELTAPOS Nachricht ab, um festzustellen, wann der Wert am Drehfeld geändert wird. Soweit so gut.Jetzt hab ich aber ein Problem. Und zwar wird sobal ich auf die Pfeile des Drehfeldes drücke und das UDN_DELTAPOS Ereigniss eintritt nicht der aktuelle Wert zurückgegeben, wenn ich GetPos aufrufe, sondern der alte.
Ist das Problem bekannt? Weiss jemand was ich da noch machen muss?
Gruss
Ironeagle
-
Hi,
reagiere doch mal auf WM_HSCROLL bzw. HM_VSCROLL je nachdem wie du das Drehfeld angeordnet hast. Da klappt bei mir GetPos() ohne Probleme
-
oh stimmt. Daran hab ich gar nicht gedacht.
Diese Nachricht wird im ResourcenEditor auch gar nicht angezeigt.Könntest du vielleicht noch den Auschnitt aus deiner MessageMap und vielleicht den Funktionsrumpf posten?
Wäre Klasse. Danke.
-
Na klar, hier der Eintrag in der MessageMap:
BEGIN_MESSAGE_MAP(CDrehfelderDlg, CDialog) //{{AFX_MSG_MAP(CDrehfelderDlg) ON_WM_VSCROLL() //}}AFX_MSG_MAP END_MESSAGE_MAP()
Und hier die Funktion für die WM_VSCROLL Nachricht:
void CDrehfelderDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // Welches Drehfeld hat die Nachricht ausgelöst? if(pScrollBar->GetDlgCtrlID()==IDC_SPIN1) { ... } }
Brauchst nicht mal GetPos(), denn in nPos steht der aktuelle Wert deines Drehfelds.
-
ok.
thx