timer funktion

danielo9

Grünschnabel
Hallo!
Ich versuch gerade ein bisschen mit C++ herumzuspielen und habe eine frage.
Bin gerade bei einem kleinen Multiplayerspiel und da wird eine neue Runde gestartet sobald der Serveradmin Shift drückt:

if(wParam==VK_SHIFT && roundstartdelay==0) StartRound();

Aber anstatt dass er Shift drücken muss hätte ich gerne dass das Spiel nach dem ende einer Runde 5 sekunden wartet und selber eine neue Runde startet. Wie müsste der code dann aussehen?

danke schon im vorraus

mfg
 
Hallo,

also wenn du mit dem TimerObject arbeiten willst dann funktioniert das ungefähr so

Code:
// TimerObject definieren für alle 5min
long lTimerID  = SetTimer(IDC_BUUPDATE_TIMER, 300000, NULL);


// MessageObject anlegen
BEGIN_MESSAGE_MAP(CBU_BlattView, CFormView)
    ON_WM_TIMER()
END_MESSAGE_MAP()

// In deiner View die Ontimer ableiten
void CDeineView::OnTimer(UINT nIDEvent)
{

	if(nIDEvent == lTimerID)
	{
            // mach dein zeug

	}
}

Ich hoffe das ist soweit alles verständlich, diese Schritte solltest du machen dann müsste dein TimerObject funktionieren. Mit KillTimer(lTimerID) löschst du den Timer wieder.

Grüße
R.
 
Danke für deine Antwort,aber wenn ich das so mache wies du gesagt hast kommen bei mir
folgende Fehler:

c:\kurve\main.cpp:225: `IDC_BUUPDATE_TIMER' was not declared in this scope
c:\kurve\main.cpp:229: `CBU_BlattView' was not declared in this scope
c:\kurve\main.cpp:229: `CFormView' was not declared in this scope
c:\kurve\main.cpp:230: ANSI C++ forbids declaration `BEGIN_MESSAGE_MAP' with no type
c:\kurve\main.cpp:230: initializer list being treated as compound expression
c:\kurve\main.cpp:230: syntax error before `('
c:\kurve\main.cpp: In function `LRESULT WndProc(HWND__ *, unsigned int, unsigned int, long int)':
c:\kurve\main.cpp:1819: `nIDEvent' undeclared (first use this function)
c:\kurve\main.cpp:1819: (Each undeclared identifier is reported only once
c:\kurve\main.cpp:1819: for each function it appears in.)

Kann mir da jemand weiterhelfen?
 
Hallo,

dies war nur ein Beispiel. IDC_BUUPDATE_TIMER kannst du auch dur 1 ersetzen. CBU_BlattView kannst du durch deine View ersetzen. Und CFormView nur wenn deine View davon abgeleitet ist. Wenn du nicht mit der Doc/View Architecture arbeitest. lass den Messageteil weg müsste auch so funktionieren. Wenn du das Teil in irgendeinem von CWND abgeleiteten Window hast einfach die Ontimer(...) Methode wie im Beispiel gezeigt ableiten.

Falls du eine eigene Win32 App gebaut hast mit WNDProc(...) usw. dann einfach in dieser dann das ON_WM_TIMER event abfangen dann brauchst du die Methode OnTimer nicht ableiten.

Ich hoffe damit konnte dir geholfen werden.

Grüße
R.
 
Zuletzt bearbeitet:
Zurück