void CNumSpinCtrl::OnDeltapos(NMHDR *pNMHDR, LRESULT *pResult) { LPNMUPDOWN pUD = reinterpret_cast<LPNMUPDOWN>(pNMHDR); *pResult = 0; int val = GetPos() + pUD->iDelta; if (pUD->iDelta < 0) { // spin down } else { } SetValueForBuddy(val); }
BOOL CFloatSpinCtrl::OnDeltapos(NMHDR* pNMHDR, LRESULT* pResult) { NM_UPDOWN* pUD = (NM_UPDOWN*)pNMHDR; double val = GetPos() + m_Delta * pUD->iDelta; const bool can_wrap = (UDS_WRAP & GetStyle()); if (pUD->iDelta < 0) { // spin down double abs_eps = fabs(EPS * max (val, m_MinVal)); if (abs_eps < EPS) { abs_eps = EPS; } if (m_MinVal - val > abs_eps) { //if (val < m_MinVal){ if (can_wrap) { val = m_MaxVal; } else { val = m_MinVal; } } } else { // spin up double abs_eps = fabs(EPS * max (val, m_MaxVal)); if (abs_eps < EPS) { abs_eps = EPS; } if (val - m_MaxVal > abs_eps) { //if (val > m_MaxVal){ if (can_wrap) { val = m_MinVal; } else { val = m_MaxVal; } } } SetValueForBuddy(val); *pResult = 0; return FALSE; // let parent process this notification too. }
void CFloatSpinCtrl::SetPos(double val) { SetValueForBuddy(val); SetIntPos(val); }