| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 10.08.2003
Сообщения: 189
![]() ![]() ![]() ![]() |
Один метод для разных событий
Visual C++
Как сделать, чтобы один метод обрабатывал несколько событий Т.е. есть две функции, кот вызываются при изменении значения в ComboBox. Как видно, отличаются они на мелочь Как тогда сбросить их в одну функцию?void CPoteriDlg::OnCbnSelchangeType2() { FillData(&m_Project2, m_Type2Value); } void CPoteriDlg::OnCbnSelchangeType3() { FillData(&m_Project3, m_Type3Value); } З.Ы. Чувствую, что должно делаться просто... может я просто уже совсем перегрелся сегодня, но не могу придумать
|
|
|
|
|
# 2 |
|
Junior Member
Регистрация: 09.12.2003
Адрес: Москва
Сообщения: 62
![]() |
юзать ON_CONTROL_RANGE, затем по ID контрола смотреть какой имеено комбо бокс был изменен, и в зависимости от ID и вызывать функцию FillData с соотв. параметрами
ON_CONTROL_RANGE(ON_CBN_SELCHANGE, IDC_COMBO1, IDC_COMBO3, OnCbnSelected) void CMyDialog::OnCbnSelected(UINT nID) { int nCbnID = nID - IDC_COMBO1; if (nCbnID == 0) { FillData(&m_Project1, m_Type1Value); } if (nCbnID == 1) { FillData(&m_Project2, m_Type2Value); } // и т.д. } ЗЫ: идешники IDC_COMBO1, IDC_COMBO2, IDC_COMBO3 должны идти подряд, см. resource.h
__________________
не учите людей думать, они вам этого не простят... |
|
|
|
|
# 3 |
|
Guest
Сообщения: n/a
|
А можно переопределить виртуальную ф-ю PreTranslateMessage
BOOL твой_класс::PreTranslateMessage( MSG* pmsg ) { if ( pmsg->message == WM_COMMAND && HIWORD(pmsg->wParam) == CBN_EDITCHANGE ) { Своя_функция( LOWORD(pmsg->wParam) /*ID ComboBox'а*/ ) return 1; } return базовый_класс::PreTranslateMessage( pmsg ); } |