Timer in mehreren Dateien
-
Hallo zusammen!
Bin noch nicht so ganz vertraut mit C++, deswegen verzeiht mir falls es nur ein dummer Fehler istZum Problem:
Ich habe versucht, einen Timer in mein Win32-Programm einzubauen und habe nun drei Dateien:main.cpp
Class class1; SetTimer(NULL, 0, 1000,(TIMERPROC) &Class::myTimer);
header.hpp
void CALLBACK myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime);
functions.cpp
void CALLBACK myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime) { //auszuführender Code }
Nun erhalte ich jedoch folgende Fehlermeldung beim kompilieren:
undefined reference to `Class::myTimer(HWND__*, unsigned int, unsigned int, unsigned long)
Wenn ich alles in einer Datei habe, funktioniert das einwandfrei, so jedoch nicht.
Wie kann ich die Referenz am Schluss der 'SetTimer'-Funktion nun an den Timer übergeben?MfG
Frankiegi
-
Ist 'myTimer' eine freie Funktion oder Member der Klasse 'Class'?
Bei ersterem einfachSetTimer(NULL, 0, 1000, &myTimer);
Falls sie doch Member der Klasse ist, dann muß sie aber als statisch deklariert sein (Callbacks können keine [nicht-statischen] Klassenmethoden sein):
// in header.hpp class Class { static void CALLBACK myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime); };
PS: Und es fehlt dann der Klassenname:
void CALLBACK Class::myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime) { //auszuführender Code }
-
Th69 schrieb:
Ist 'myTimer' eine freie Funktion oder Member der Klasse 'Class'?
Zweiteres ist der Fall. Ich habe die Funktion als statisch deklariert und den Klassennamen hinzugefügt, funktioniert nun einwandfrei!
DANKE!
Habe mir schon ewig den Kopf zerbrochen, wegen so einem Flüchtigkeitsfehler
Schönen Abend noch