OWL Diverse Themen |
Dazu wird zunächst der Timer gestartet. Dies kann von jeder Memberfunktion von TWindow oder einer abgeleiteten Klasse (z. B. auch TDialog) durch Setzen des Timers erfolgen.
SetTimer(1, 1000);Der erste Parameter ist die Timer-ID, der zweite ist das Ereignisintervall in msek. Im Beispiel wird also jede Sekunde ein WM_TIMER-Ereignis bei der Fensterfunktion eintreffen, bis der Timer gestoppt wird.
Damit ein Timer-Ereignis behandelt wird, muß eine EvTimer-Funktion eingerichtet werden.
class tInitDialog : public TDialog { public: tInitDialog(TWindow *parent, TResId resID); void SetupWindow(); protected: void EvTimer(uint); DECLARE_RESPONSE_TABLE(tInitDialog); private: int Sekunden; }; DEFINE_RESPONSE_TABLE1(tInitDialog, TDialog) EV_WM_TIMER, END_RESPONSE_TABLE;Die EvTimer-Funktion erhält als Parameter die Timer-ID. Sie (oder eine andere Memberfunktion der Fensterklasse) kann den Timer durch Aufruf von KillTimer wieder abschalten.
void tInitDialog::EvTimer(uint TimerID) { Sekunden--; if (Sekunden<=0) { KillTimer(TimerID); } }Leider definiert Windows den Parametertyp für die Timer-ID als uint, OS/2 dagegen als UINT. Ein kleiner #define am Anfang des Listings sorgt für Portabilität.
#ifdef __OS2__ #define uint UINT #endif
GetApplication()->LoadString(ResID, buffer, len);
OS/2 | Windows | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Homepage - OWL-Index | 22.9.2001 (C) Copyright 1999, 2001 Arnold Willemer |