OWL Diverse Themen

Willemers Informatik-Ecke

Timer benutzen

Unter OS/2 und Windows kann ein oder mehrere Timer benutzt werden. Sie sind an die Fenster gebunden. Das Fenster erhält also eine Nachricht (WM_TIMER), wenn ein Timer ein Signal gibt.

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

Laden von Stringtabellen aus der Ressource

Texte sollten der leichteren Internationalisierung in den Ressourcen stehen. Dort liegen sie in einem STRINGTABLE. Man kann sie in einem beliebigen Fenster mit dem einfachen Aufruf laden:

GetApplication()->LoadString(ResID, buffer, len);


Ressource Syntaxunterschiede zwischen OS/2 und Windows

Obwohl sich die Ressource-Dateien eigentlich recht ähnlich sind, unterscheiden sich diese zwischen OS/2 und Windows. Beispiele:
OS/2Windows
BITMAP BMP_LIVE live.bmp
POINTER CUR_MALET malet.cur
ICON ICO_CRITTER critter.ico
BMP_LIVE BITMAP live.bmp
CUR_MALET CURSOR malet.cur
ICO_CRITTER ICON critter.ico


Homepage - OWL-Index 22.9.2001 (C) Copyright 1999, 2001 Arnold Willemer