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 |