Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
borr_1
Super wx Problem Solver
Posts: 362 Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty
Post
by borr_1 » Thu Nov 20, 2008 7:10 am
Мне нужно отследить событие - получение фокуса комбобоксом.
Пытаюсь:
Code: Select all
Connect(ID_ARENDATOR/*это ID того самого комбы*/, wxEVT_SET_FOCUS,(wxObjectEventFunction)&Dogovor::OnFocusArendator);
....
void Dogovor::OnFocusArendator(wxFocusEvent& event)
{
//Сюда отладчик вообще не попадает
event.Skip();
}
То же самое с wxEVT_ACTIVATE и wxActivateEvent - вообще никакой реакции.
Помогите решить задачу.
tan
wxWorld Domination!
Posts: 1471 Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia
Post
by tan » Thu Nov 20, 2008 8:04 am
borr_1 wrote: Мне нужно отследить событие - получение фокуса комбобоксом.
Пытаюсь:
Code: Select all
Connect(ID_ARENDATOR/*это ID того самого комбы*/, wxEVT_SET_FOCUS,(wxObjectEventFunction)&Dogovor::OnFocusArendator);
А это реальный код? Вообще-то я полагаю должно быть примерно так:
Code: Select all
m_combo->Connect(ID_ARENDATOR/*или wxID_ANY*/, wxEVT_SET_FOCUS,(wxObjectEventFunction)&Dogovor::OnFocusArendator, 0, this);
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10
borr_1
Super wx Problem Solver
Posts: 362 Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty
Post
by borr_1 » Thu Nov 20, 2008 8:34 am
Да действительно код нереальный
А я уж было в обход пошел через wxEVT_CHILD_FOCUS
Code: Select all
void Dogovor::OnFocusArendator(wxChildFocusEvent& event)
{
int id = event.GetWindow()->FindFocus()->GetId();
if(event.GetWindow()->FindFocus()->GetId() == ID_ARENDATOR)
{...}
event.Skip();
}