Hallo zusammen,
ich habe ein Problem mit dem Timer.
Ich möchte/habe einen zellulären Automaten programmiert. Nun soll z.B. jede Sekunde ein neuer Evolutionsschritt dargestellt werden.
So habe ich es probiert:
Die Funktion init() initialisiert den Autometen, Evolution() berechnet die neuen Werte und die Funktion OnDraw gibt alles auf dem Bildschirm aus (sollte zumindest so sein).
Nun mein Problem:
Die Evolution wird brav berechnet, aber nicht beim Timer-Event neu dargestellt. Neue Bilder gibt es immer nur, wenn ich die Fenster-Größe ändere ( und eigentlich wollte ich nicht die ganze Zeit am Fenster wackeln, damit ich den neuen Zustand sehen kann).
Was mache ich nur falsch
Bitte helft mir...
ich habe ein Problem mit dem Timer.
Ich möchte/habe einen zellulären Automaten programmiert. Nun soll z.B. jede Sekunde ein neuer Evolutionsschritt dargestellt werden.
So habe ich es probiert:
Code:
const UINT idTimer = 1;
UINT nTimerDelay = 100;
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch (message)
{
case WM_CREATE:
SetTimer(hwnd, idTimer, nTimerDelay, NULL );
init();
return 0;
case WM_PAINT:
OnDraw( hwnd );
return 0;
case WM_TIMER:
Evolution();
OnDraw( hwnd );
return WM_PAINT;
case WM_DESTROY:
KillTimer(hwnd, idTimer);
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
Die Funktion init() initialisiert den Autometen, Evolution() berechnet die neuen Werte und die Funktion OnDraw gibt alles auf dem Bildschirm aus (sollte zumindest so sein).
Nun mein Problem:
Die Evolution wird brav berechnet, aber nicht beim Timer-Event neu dargestellt. Neue Bilder gibt es immer nur, wenn ich die Fenster-Größe ändere ( und eigentlich wollte ich nicht die ganze Zeit am Fenster wackeln, damit ich den neuen Zustand sehen kann).
Was mache ich nur falsch
Bitte helft mir...
Zuletzt bearbeitet: