Kampfgnom
Lt. Commander
- Registriert
- Jan. 2005
- Beiträge
- 1.075
Hi
Nachdem ihr mir bisher immer so wunderbar geholfen habt kommen wir zur nächsten Frage.
Ich habe eine Klasse, die im Konstruktor eine eigene Methode als Timer initialisieren soll.
Sprich ich will an die SetTimer Funktion eine Funktion übergeben, die in einer meiner Klassen Member ist.
Hier mal die SetTimer-Funktion:
Und was TIMERPROC darstellen soll:
Meine Methode deklarier ich so:
oder auch
das macht wenig Unterschied...
Nun hab ich ein wenig rumprobiert ( in MirandaPlugin::Init() ):
führt zu
Ganz gut hats schon geklappt mit:
oder
das führt zu
Alle Möglichkeiten hab ich auch schon mit Cast auf (TIMERPROC) probiert. Da krieg ich dann immer
oder
Hat da vielleicht einer schonmal was mit gemacht?
Das selbe Problem hab ich auch wenn es um CreateThread(..) geht.
danke
mfg
Nachdem ihr mir bisher immer so wunderbar geholfen habt kommen wir zur nächsten Frage.
Ich habe eine Klasse, die im Konstruktor eine eigene Methode als Timer initialisieren soll.
Sprich ich will an die SetTimer Funktion eine Funktion übergeben, die in einer meiner Klassen Member ist.
Hier mal die SetTimer-Funktion:
Code:
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
Code:
typedef void (*TIMERPROC)(HWND,UINT,UINT_PTR,DWORD)
Meine Methode deklarier ich so:
Code:
void CALLBACK MirandaPlugin::getValue(HWND hwnd,UINT ui,UINT_PTR uiptr,DWORD dw)
{
MessageBox(NULL,"test","test",MB_OK);
}
Code:
TIMERPROC MirandaPlugin::getValue(HWND hwnd,UINT ui,UINT_PTR uiptr,DWORD dw)
{
MessageBox(NULL,"test","test",MB_OK);
}
Nun hab ich ein wenig rumprobiert ( in MirandaPlugin::Init() ):
Code:
TIMER_ID=SetTimer(NULL,TIMER_ID,time*1000,(&MirandaPlugin::getValue));
führt zu
Code:
error C2664: 'SetTimer': Konvertierung des Parameters 4 von 'TIMERPROC (__thiscall MirandaPlugin::* )(HWND,UINT,UINT_PTR,DWORD)' in 'TIMERPROC' nicht möglich
Ganz gut hats schon geklappt mit:
Code:
TIMER_ID=SetTimer(NULL,TIMER_ID,time*1000,this->MirandaPlugin::getValue);
Code:
TIMER_ID=SetTimer(NULL,TIMER_ID,time*1000,this->getValue);
das führt zu
Code:
error C2664: 'SetTimer': Konvertierung des Parameters 4 von 'TIMERPROC (HWND,UINT,UINT_PTR,DWORD)' in 'TIMERPROC' nicht möglich
Alle Möglichkeiten hab ich auch schon mit Cast auf (TIMERPROC) probiert. Da krieg ich dann immer
Code:
g:\C++\ogame\MirandaPlugin.cpp(43): error C2440: 'Typumwandlung': 'TIMERPROC (__thiscall MirandaPlugin::* )(HWND,UINT,UINT_PTR,DWORD)' kann nicht in 'TIMERPROC' konvertiert werden
Code:
g:\C++\ogame\MirandaPlugin.cpp(43): error C2440: 'Typumwandlung': 'overloaded-function' kann nicht in 'TIMERPROC' konvertiert werden
Hat da vielleicht einer schonmal was mit gemacht?
Das selbe Problem hab ich auch wenn es um CreateThread(..) geht.
danke
mfg