VC++: Timerhandling / Zeiger auf Methoden

Gast #250196
Lesenswert?

Hi Leuts,
ich habe ein kleines Problem mit den Timern unter Windows.
Ich möchte mir, ähnlich einer SPS, einen Timer bauen, den ich mit einer
Zeitvorgabe starte (ca. 100 ms), und der nach Ablauf nichts anderes
macht als ein FALSE zurückzuliefern.
Mit der Funktionen SetTimer klappt das eigentlich fehlerfrei.
Ich starte den Timer im 10 ms Intervall und gebe ihm eine Funktion mit
die in diesem Intervall aufgerufen wird. Dort zähle ich einfach einen
Zähler hoch, der bei Erreichen des voreingestellen Wertes ein Flag auf
False setzt.
C++ like möchte ich das ganze nun in eine Klasse packen, demnach also
auch die Funktion die beim Auslösen des Timers aufgerufen wird. Aber
ich krieg irgendwie den Zeiger auf diese Methode nicht gebacken. Wie
macht man sowas ?



Greets
Karlheinz
#250198
Lesenswert?

Du könntest bei SetTimer einen Zeiger auf das Objekt übergeben (dieser
void*-Parameter).

In der Timer-Behandlung castest du mittels reinterpret_cast<> wieder
auf den korrekten Zeigertyp und rufst wie gehabt mit -> die
member-Funktionen auf:

foo* bar = new foo; // objekt bar der Klasse foo
SetTimer(/* ... */, bar);
// delete bar nicht vergessen,
// wenn bar nicht mehr gebraucht wird

// In der Timer-Funktion mit void* param:
foo* bar = reinterpret_cast<bar*>(param);
bar->member_call();
// etc.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren