如何在功能上设置多个事件

时间:2016-10-19 12:30:22

标签: c++ events wxwidgets

如何调用已经附加事件的函数?

我希望能够用这样的方式调用函数:

statsDialog::statsDialog(..) : wxDialog(..) {
    updateStats();
}

或者,如何将多个事件处理程序绑定到函数?例如,在按下wxEVT_SET_FOCUS时调用带有UPDATE_STATS_BUTTON事件AND的updateStats。如何在不重复代码的情况下执行此操作(复制updateStats函数只需将其更改为wxFocusEventHandler)?

BEGIN_EVENT_TABLE(statsDialog, wxDialog)
EVT_BUTTON(UPDATE_STATS_BUTTON, statsDialog::updateStats)
END_EVENT_TABLE()

statsDialog::statsDialog(..) : wxDialog(..) {    
    // layout stuff
}

void
statsDialog::updateStats(wxCommandEvent& event) {
    // do stuff on dialog focus AND when UPDATE_STATS_BUTTON is pressed
}

1 个答案:

答案 0 :(得分:0)

只需从焦点和按钮事件处理程序调用一个名为DoUpdateStats()的函数。将C ++ 11与Bind()

一起使用时,这一点尤为重要
Bind(wxEVT_SET_FOCUS, [](wxFocusEvent& e) { e.Skip(); DoUpdateStats(); });
btn->Bind(wxEVT_BUTTON, [](wxCommandEvent&) { DoUpdateStats(); });