Wie rufen Sie eine Funktion auf, der bereits ein Ereignis zugeordnet ist?So legen Sie mehrere Ereignisse für die Funktion fest
Ich möchte die Funktion mit so etwas rufen können:
statsDialog::statsDialog(..) : wxDialog(..) {
updateStats();
}
Oder, wie mehrere Eventhandler auf eine Funktion binden? Rufen Sie zum Beispiel updateStats mit dem Ereignis wxEVT_SET_FOCUS
AND auf, wenn UPDATE_STATS_BUTTON
gedrückt wird. Wie kann ich das tun, ohne Code zu duplizieren (Kopieren der Funktion updateStats, indem Sie sie einfach in wxFocusEventHandler
ändern)?
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
}
Vielen Dank! Works, musste aber & in den Klammern hinzufügen, damit es kompiliert werden konnte. 'updateStatsButton-> Bind (wxEVT_BUTTON, [&] (wxCommandEvent &) {DoUpdateStats();});' –
Der Standard-Capture-Knoten wird nicht benötigt, wenn 'DoUpdateStats()' eine globale Funktion ist, aber wenn es eine Member-Methode ist müssen "dieses" erfassen. Es ist wohl besser, dies explizit zu tun, als den Standard-Capture-Modus zu verwenden. –