JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=6dc90260574a9c72204b6c3d503430b0Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Aktion Verzögern

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 03.01.2003, 13:59    Titel: Aktion Verzögern Antworten mit Zitat

wie kann ich es machen, das eine Variable nur jede Sekunde um 2 erhöht wird??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 03.01.2003, 16:02    Titel: Antworten mit Zitat

Zum Beispiel mit einem Timer, der einmal pro Sekunde ein Event sendet. Schaue fuer Informationen dazu in die MSDN unter dem Stichwort SetTimer oder WM_TIMER.
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DaN00b
JLI'ler



Anmeldedatum: 10.08.2002
Beiträge: 159

Medaillen: Keine

BeitragVerfasst am: 03.01.2003, 23:53    Titel: Antworten mit Zitat

oder man macht sich selber en timer mit timeGetTime() Very Happy
_________________
Carpe Diem - Seize the day - Nütze den Tag!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 04.01.2003, 10:40    Titel: Antworten mit Zitat

Hi, also ich hab in der MSDN nach SetTimer gesucht und dann auch was gefunden:

Code:
UINT SetTimer(
  HWND hWnd,              // handle of window for timer messages
  UINT nIDEvent,          // timer identifier
  UINT uElapse,           // time-out value
  TIMERPROC lpTimerFunc   // address of timer procedure
);
 


Also der erste und dritte Parameter sind mir klar, aber was muss man beim zweiten und dritten Parameter angeben.

PS: Ich hab des in der MSDN leider net ganz verstanden, bin noch nicht so gut in Englisch.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 04.01.2003, 11:04    Titel: Antworten mit Zitat

Hallo,

für

UINT nIDEvent

übergist du einen beliebigen (aber in deinem Programm eindeutigen) Wert.
Wenn du z.B. mehrere Timer verwendest, dient dieser Wert dazu den Timer zu identifizieren.
TIMERPROC lpTimerFunc brauchst du nur, wenn du dir eine eingene Timer-Behandlungsroutine schreiben willst und keine WM_TIMER Nachrícht in der Callback Funktion bekommen willst. z.B.:

Code:

#define MY_TIMER_1 1001

SetTimer(hWnd,MY_TIMER_1,100,0);

...


KillTimer(hWnd,MY_TIMER_1);



Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 04.01.2003, 11:57    Titel: Antworten mit Zitat

In meiner Callbackfunktion kann ich WM_TIMER nicht gebrauchen, da ich den Timer in na Klasse verwende und da soll dann auch was passieren wenn der Timer abgelaufen ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 04.01.2003, 11:58    Titel: Antworten mit Zitat

Aber was muss ich dann machen??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 04.01.2003, 12:59    Titel: Antworten mit Zitat

Eine Klassenmethode kannst du als Callback-Funktion leider nicht verwenden, es sei denn, sie ist statisch. Du könntest das so machen, das in deiner WindowsProc(), wenn WM_TIMER gesendet wurde, die Klassenmethode von da aus aufgerufen wird, also etwa so:
Code:

CKlasse instanz;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
  case WM_TIMER:
    if (wParam==MY_TIMER_1)
      instanz.TimerEvent();
    break;
  ...
  }
}

_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 04.01.2003, 13:09    Titel: Antworten mit Zitat

Noch ne einfachere Möglichkeit, das zu machen und die mir grad noch eingefallen ist, ist, indem du als Timer-ID die Adresse der Klasseninstanz nimmst, die die Timernachricht erhalten soll.
Beispielsweis so:
Code:

class CKlasse
{
public:
  CKlasse() //konstruktor
  {
    SetTimer(g_hWnd,(UINT_PTR)this,1000,(TIMERPROC)WndProc);
    m_nVariable=0;
  }
  void TimerEvent()
  {
    m_nVariable++;
  }
private:
  int m_nVariable;
};

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
  case WM_TIMER:
    ((CKlasse*)wParam)->TimerEvent();
    break;
  }
}

Wenn du jetzt eine Instanz von CKlasse anlegst, registriert sie automatisch einen Timer, der TimerEvent() dieser Instanz aufruft. Denk noch daran, den Timer im Destruktor oder sonstwo zu killen.

Jörg
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum