was brauch ich? Timer?



  • folgendes problem, ich will wie wahrscheinlich schon viele leute hier gewollt haben und nach hilfe gefragt haben, neben dem hauptprogramm nebenher noch was laufen lasse, was aber im selben fenster passiert... z.b. dass ich ein prgramm habe, aber während des programms alle 3 sekunden eine variable immer mal 2 gerechnet wird (is jetzt nur n beispiel)! ich glaube dafür brauche ich timer oder threads oder sowas, aber bitte schreibt jetzt nicht nur www.boost.org oder irgendwelche andere seiten, sondern eine detaillierte beschreibung brauch ich...

    danke an denjenigen, der sich die zeit dafür nimmt!
    mfg



  • da musste erstmal schreiben was das für'n programm ist.
    laeuft es unter windoof oder 'nem unix-like os?
    mit fensterchen oder nur textmodus?
    usw...???



  • windows DOS sollte das sein benutze Dev-c++ als compiler



  • Wenn du nur z.B. eine bestimmte funktion alle 3 Sekunden aufrufen willst, dann genügt es in deiner Hauptschleife die Zeit über time() aus ctime abzufragen und gegebenenfalls die Funktion aufzurufen.
    Dieses Programm gibt alle 3 Sekunden Hi aus:

    #include <iostream>
    #include <ctime>
    
    using namespace std;
    
    void every3sec()
    {
    	cout << "Hi" << endl;
    }
    
    int main()
    {
    	bool exit(false);
    	int exectime = time(0) + 3;
    	while (!exit)
    	{
    		if (exectime == time(0))
    		{
    			every3sec();
    			exectime = time(0) + 3;
    		}
    
    	}
    	return 0;
    }
    


  • Gehört zwar ins WinAPI-Forum, aber bitte sehr:

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    unsigned int elapsedTime = 0;
    
    VOID CALLBACK myTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
    {
        cout << (++elapsedTime) << endl;
    }
    
    int main()
    {
        UINT_PTR myTimer = SetTimer(
            0, //Handle zum Fenster (haben wir nicht)
            0, //Identifier für den Event (wenn's mehrere Timer pro Fenster gibt, aber wir haben ja kein Fenster...)
            1000, //Intervall auf 1000 Millisekunden (= 1 Sekunde)
            myTimerProc); //Zeiger auf die Timer-Behandlungs-Funktion
    
        if(myTimer)
        {
            MSG myMessage;
            while(GetMessage(&myMessage, 0, WM_TIMER, WM_TIMER) && elapsedTime < 10)
            {
                DispatchMessage(&myMessage); //empfangene Nachricht weiterleiten
                //mache irgendwas (oder auch nicht)
            }
            KillTimer(0, myTimer);
        }
        else
            cout << "Timer konnte nicht erstellt werden." << endl;
    }
    

    Nähere Infos zur WinAPI gibt es im MSDN:
    SetTimer
    KillTimer
    TimerProc
    GetMessage
    DispatchMessage



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ 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.



  • vielleicht hilft Dir dies http://www.c-plusplus.net/forum/viewtopic-var-t-is-160005-and-highlight-is-.html schon mal weiter

    Gruß
    Werner


Anmelden zum Antworten