Le corps, affecté par SetUpdateNextEvent, donne des valeurs spécifiques à un événement qui vient d'être auto-généré. .void myEvent_updateNextEvent_Body(EventMethod* pM) { Event* pPreviousEvent = pM->GetEventArgValue(PREVIOUS_EVENT_ARGUMENT); Event* pEventToUpdate = pPreviousEvent->NextEvent(); ... // les ajustements définissant le prochain événement (pEventToUpdate) } MyEvent::MyEvent() : Event(MY_EVENT, "myEvent") { ... SetUpdateNextEvent(myEvent_updateNextEvent_Body); ... };Le constructeur UpdateNextEvent() affecte le symbole de classe UPDATE_NEXT_EVENT et le nom de classe "updateNextEvent". Ainsi, on peut écrire :
int main(...) { ... Event* pEv = new MyEvent(); // le code ci-dessous ... Method* pM = pEv->GetMethod(UPDATE_NEXTEVENT); pM->SetArgValue(PREVIOUS_EVENT_ARGUMENT, pEv); ((EventVoidMethod*)pM)->Body((EventMethod*)pM); // ... est équivalent à celui-ci pEv->SetEventArgValue(UPDATE_NEXTEVENT, PREVIOUS_EVENT_ARGUMENT, pEv); pEv->ExecVoidMethod(UPDATE_NEXTEVENT); ... }