![]() |
Один метод для разных событий
Visual C++
Как сделать, чтобы один метод обрабатывал несколько событий Т.е. есть две функции, кот вызываются при изменении значения в ComboBox. Как видно, отличаются они на мелочь :) Как тогда сбросить их в одну функцию? void CPoteriDlg::OnCbnSelchangeType2() { FillData(&m_Project2, m_Type2Value); } void CPoteriDlg::OnCbnSelchangeType3() { FillData(&m_Project3, m_Type3Value); } З.Ы. Чувствую, что должно делаться просто... может я просто уже совсем перегрелся сегодня, но не могу придумать :( |
юзать 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 |
А можно переопределить виртуальную ф-ю 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 ); } |
| Часовой пояс GMT +4, время: 17:16. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.