Timer in einer DirectX-Anwendung
-
Hi
Ich möchte einen Timer in meiner DirectX-Anwendung brauchen.
Den Timer kann ich starten mit:SetTimer(hWnd,1,1000,NULL);Mein Problem ist aber der Aufruf, der Funktion, welche jede Sekunude aufgerufen werden soll.
Hier die Funktion:
void CALLBACK TimerProc( HWND hwnd, // handle of window for timer messages UINT uMsg, // WM_TIMER message UINT idEvent, // timer identifier DWORD dwTime // current system time ) { serialport.send("f"); CString funk= serialport.receive(1); if(funk=="") { i_funklost++; } else { i_funklost=0; } }Kann mir jemand sagen, wieso die Funktion nicht aufgerufen wird?
-
Du solltest mal in der MSDN nachlesen, wozu der letzte Parameter der SetTimer-Funktion, der für den du NULL angibst, gut ist ...
-
Nun - irgendwas fehlt wohl, wenn du so startest:
SetTimer(hWnd,1,1000,NULL);In der MSDN steht sowas drin:
UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc );Was fehlt, kannst du auf einem Blick erkennen
[edit] Mist da war wohl einer schneller

-
Dieser Thread wurde von Moderator/in rapso aus dem Forum Spiele-/Grafikprogrammierung in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich habe schon gesehen, dass man anstelle von NULL den Funktionsnamen eingeben kann... Aber wie mache ich das? Wenn ich nur den Namen eingebe, gibt es einen Fehler...
Wie würdi ich es den richtig machen?
-
Verrat uns mal welchen Fehler der Compiler ausspuckt

-
Ok
ich setze den Timer wie folgt:
SetTimer(hWnd,1,1000,onTimer);Die Funktion habe ich folgendermassen definiert:
void onTimer(void)Dies ist die Fehlermeldung:
error C2664: 'SetTimer' : Konvertierung des Parameters 4 von 'void (void)' in 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)' nich t moeglich Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp uebereinWo liegt das Problem?
-
-
dies habe ich schon langer versucht! Jedoch wenn ich in Settimer NULL eingebe wird diese Funktion trotzdem nicht aufgerufen.... und wenn ich die Funktion wieder in SetTimer eingebe, kommt wieder die Fehlermeldung, die ich vorhin beschrieben habe!
-
Du beachtest eben die Funktionsdeklaration nicht bzw. hältst dich nicht daran:
VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime );