Auf das Zeitintervall reagieren


Was in der VCL-Programmierung das "OnTimer"-Event ist, ist beim API die Nachricht "WM_TIMER", die gesendet wird, sobald das angegebene Intervall abgelaufen ist. Gemäß der Deklaration aus unserem Beispiel würde die Nachricht also bereits nach 1 Sekunde das erste Mal auftreten ... und so fort ... Wir müssen also nichts weiter tun, als diese Nachricht in der Nachrichtenfunktion abzufangen und zu bearbeiten:

WM_TIMER:
  begin
    {Countdown aktualisieren}
    Dec(i);
    wvsprintf(buffer, 'Countdown %d', PChar(@i));
    SetWindowText(hwndLabel, buffer);
    ...
  end;

Da wir im Beispielprogramm nur einen Timer benutzen, entfällt die gezielte Abfrage der Timer-ID. Hätten Sie z.B. mehrere Timer in Ihrem Programm, dann müssten Sie den Wert von wParam abfragen, der die ID enthält:

WM_TIMER:
  case wParam of
    IDC_TIMER1:
      // Timer 1 ist aktiv geworden
    IDC_TIMER2:
      // Timer 2 ist aktiv geworden
// usw.
end;