bool wxRadioBox::OS2Command( WXUINT uCmd, WXWORD wId) { int nSelectedButton = -1; if (uCmd == BN_CLICKED) { if (wId == GetId()) return true; for (unsigned int i = 0; i < m_nNoItems; i++) { if (wId == wxGetWindowId(m_ahRadioButtons[i])) { nSelectedButton = i; break; } } if (nSelectedButton == -1) { // // Just ignore it // return false; } if (nSelectedButton != m_nSelectedButton) { m_nSelectedButton = nSelectedButton; SendNotificationEvent(); } return true; } else return false; } // end of wxRadioBox::OS2Command
bool wxRadioBox::MSWCommand(WXUINT cmd, WXWORD id_) { const int id = (signed short)id_; if ( cmd == BN_CLICKED ) { if (id == GetId()) return true; int selectedButton = wxNOT_FOUND; const unsigned int count = GetCount(); #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for ( unsigned int i = 0; i < count; i++ ) { const HWND hwndBtn = (*m_radioButtons)[i]; if ( id == wxGetWindowId(hwndBtn) ) { // we can get BN_CLICKED for a button which just became focused // but it may not be checked, in which case we shouldn't // generate a radiobox selection changed event for it if ( ::SendMessage(hwndBtn, BM_GETCHECK, 0, 0) == BST_CHECKED ) selectedButton = i; break; } } if ( selectedButton == wxNOT_FOUND ) { // just ignore it - due to a hack with WM_NCHITTEST handling in our // wnd proc, we can receive dummy click messages when we click near // the radiobox edge (this is ugly but Julian wouldn't let me get // rid of this...) return false; } if ( selectedButton != m_selectedButton ) { m_selectedButton = selectedButton; SendNotificationEvent(); } //else: don't generate events when the selection doesn't change return true; } else return false; }
bool wxRadioBox::MSWCommand(WXUINT cmd, WXWORD id) { if ( cmd == BN_CLICKED ) { if (id == GetId()) return true; int selectedButton = wxNOT_FOUND; int count = GetCount(); for ( int i = 0; i < count; i++ ) { if ( id == wxGetWindowId((*m_radioButtons)[i]) ) { selectedButton = i; break; } } if ( selectedButton == wxNOT_FOUND ) { // just ignore it - due to a hack with WM_NCHITTEST handling in our // wnd proc, we can receive dummy click messages when we click near // the radiobox edge (this is ugly but Julian wouldn't let me get // rid of this...) return false; } if ( selectedButton != m_selectedButton ) { m_selectedButton = selectedButton; SendNotificationEvent(); } //else: don't generate events when the selection doesn't change return true; } else return false; }