如何在函数上设置多个事件
How to set multiple events on function
如何调用已经附加了事件的函数?
我希望能够像这样调用函数:
statsDialog::statsDialog(..) : wxDialog(..) {
updateStats();
}
或者,如何将多个事件处理程序绑定到一个函数?例如,使用 wxEVT_SET_FOCUS
事件并在按下 UPDATE_STATS_BUTTON
时调用 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
}
只需从焦点和按钮事件处理程序中调用一个名为 DoUpdateStats()
的函数即可。当使用带有 Bind()
:
的 C++11 时,这是特别微不足道的
Bind(wxEVT_SET_FOCUS, [](wxFocusEvent& e) { e.Skip(); DoUpdateStats(); });
btn->Bind(wxEVT_BUTTON, [](wxCommandEvent&) { DoUpdateStats(); });
如何调用已经附加了事件的函数?
我希望能够像这样调用函数:
statsDialog::statsDialog(..) : wxDialog(..) {
updateStats();
}
或者,如何将多个事件处理程序绑定到一个函数?例如,使用 wxEVT_SET_FOCUS
事件并在按下 UPDATE_STATS_BUTTON
时调用 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
}
只需从焦点和按钮事件处理程序中调用一个名为 DoUpdateStats()
的函数即可。当使用带有 Bind()
:
Bind(wxEVT_SET_FOCUS, [](wxFocusEvent& e) { e.Skip(); DoUpdateStats(); });
btn->Bind(wxEVT_BUTTON, [](wxCommandEvent&) { DoUpdateStats(); });