timer + timer prog für 32bit konsolen anwendung



  • Obwohl ich win nimmer hab...
    Problem ist auch, dass WM_TIMER an ein Fenster weitergeleitet werden will.



  • Original erstellt von Mr. N:
    Obwohl ich win nimmer hab...
    Problem ist auch, dass WM_TIMER an ein Fenster weitergeleitet werden will.

    Nee, kann wohl auch null sein. Wobei da der zweite Parameter überflüssig ist.



  • Du brauchst wohl noch irgendwo eien Message-Loop, sonst wird das nichts. Windows mag dir zwar eine WM_TIMER schicken, aber wo holst du sie denn ab und leitest sie an deine Fenster-Prozedur weiter?



  • Also ich denke, dass es so ist, wie DrGreenthumb schon gesagt hat: dein Programm wird halt sofort beendet! 😉
    D.h. du kannst entweder seine Variante mit Sleep() verwenden, oder du legst eine globale Variable (z.B. bEnd) für die Abbruchbedingung an, und setzt dann unterhalb von SetTimer ein while(!bEnd) { } und setzt dann, wenn das Programm beedet werden soll diese Variable



  • Es nützt nichts, wenn er sich da eine Endlosschleife baut. Er brauch definitiv eine Message-Loop. Oder wie soll er sonst an die WM_TIMER-Nachrichten rankommen, die ihm Windows schickt? 😕



  • funzt das überhaupt mit nem konsolenprog(msgloop usw)?
    ich würds mit ner win32 app machen und dann mit CreateConsole(such ma danach hab ich ma irgendwo hier im forum gesehn)das consolen fenster erstellen.



  • Erstelle dir einfach nen zweiten Thread. Jegliches Fenster-Gefummel ist hier unangebracht.

    [EDIT]
    Oder du arbeitest mit timeSetEvent().
    [/EDIT]

    [ Dieser Beitrag wurde am 06.04.2003 um 22:56 Uhr von WebFritzi editiert. ]



  • also ich hab mir jetzt mal das gebastelt:

    do
            {
                CountTwo = GetTickCount();
                do
                {
                    CountOne = GetTickCount();
                }
                while((CountOne - CountTwo) < DauerInMilliSek);
    
                    //hier kommt der code hin...
    
            }
            while (EndBedingung);
    

    irgentwelche einwende?!



  • ich poste das mal als kleine test-anwendung...

    #include <iostream>
    #include <fstream>
    #include <windows.h>
    using namespace std;
    
    int CountTwo , CountOne , End;
    char start;
    char time[100];
    
    SYSTEMTIME st;
    
    int main ()
    {
        End = 0;
        ofstream dat;
    
        cout << "starten sie mit 'x'\n";
        cin >> start;
        if (start == 'x')
        {
            dat.open("c:\\windows\\desktop\\abc.txt",ios_base::out);
            do
            {
                CountTwo = GetTickCount();
                do
                {
                    CountOne = GetTickCount();
                }
                while((CountOne - CountTwo) < 3000);
    
                    GetLocalTime(&st);
                    sprintf(time,"%02d:%02d:%02d",st.wHour,st.wMinute,st.wSecond);
                    cout << time << endl;
                    dat << time << endl;
                    ++End;
    
            }
            while (End < 20);
                    dat.close();
        };
    
        return 0;
    };
    


  • hi,

    mit den anderen methoden bin ich nich wirklich klar gekommen(alos funtzten nicht)

    hat noch jemand einen anderen(besseren!) vorschlag?


Anmelden zum Antworten