Methode alle X Sekunden aufrufen



  • CStoll schrieb:

    Der weiß davon, weil du es ihm mit SetTimer() mitgeteilt hast 😉 (wenn der Timer auslöst, schickt er eine WM_TIMER Nachricht mit der angegebenen ID als wParam an das Zielfenster)

    Achja 🙄 👍



  • Ne, ich häng immer noch am WPARAM fest. Irgendwie ist es doch nirgends definiert? Also wo bekomme ich das her?

    ::SetTimer(m_ParenthWnd, IDT_TIMER, 5000, 0);
    

    hat doch nix mit WPARAM zu tun oder?





  • Könnt Ihr von dem Kerl die IP raussuchen und ihn anzeigen? Der spamt das ganze Forum mit jugendgefährdenen Videos zu!



  • plizer schrieb:

    Ne, ich häng immer noch am WPARAM fest. Irgendwie ist es doch nirgends definiert? Also wo bekomme ich das her?

    WPARAM ist ein typ, ein #define oder typedef. wenn du <windows.h> includest, dann hast du den.

    ::SetTimer(m_ParenthWnd, IDT_TIMER, 5000, 0);
    

    hat doch nix mit WPARAM zu tun oder?
    [/quote]
    wenn der window manager die WndProc mit WM_TIMER aufruft, erscheint dein wert 'IDT_TIMER' als WPARAM.
    (ich glaub' aber, das hat schon jemand geschrieben)
    🙂



  • Also pack ich dann mein IDT_TIMER in die Switch-Anweisung? Nur dann überspringt er diese einfach?!



  • plizer schrieb:

    Könnt Ihr von dem Kerl die IP raussuchen und ihn anzeigen? Der spamt das ganze Forum mit jugendgefährdenen Videos zu!

    Die IP haben wir schon - und inzwischen ist wohl die halbe Belegschaft dabei, ihm hinterherzuräumen 😡

    @Topic: Von welchem switch() genau redest du jetzt? Der äußere (große) 'switch(message){...} wird kaum deine IDT_TIMER erhalten (die gesendete Nachricht ist WM_TIMER), aber in deinem 'case WM_TIMER:' Block kannst du einen zweiten switch(wPram) aufbauen, um die vielen Timer deiner Anwendung unterscheiden zu können (wenn du nur einen hast, kannst du dessen ID auch nicht beachten).



  • plizer schrieb:

    Also pack ich dann mein IDT_TIMER in die Switch-Anweisung? Nur dann überspringt er diese einfach?!

    wie viele timer benutzt du?
    wenn du nur einen hast, brauchst du im case-zweig 'WM_TIMER' nichts abzufragen, weil er da nur bei timer messages des einzigen timers landet.
    aber lies dir noch mal den thread durch. ähnliches steht alles schon da...
    🙂



  • Ich benutze nur einen Timer! Man, kann man echt so schlecht in einer Sprache sein plötzlich? Versteh da fast nichts, aber für riesige Java-Projekte und ein Informatik-Studium-Abschluss unter Regelstudienzeit hats gereicht.

    Wenn ich jetzt die switch Anweisung rausnehme, bleibt ja nix mehr über! Irgendwie versteh ich immer noch nicht wie und wo ich jetzt meine Methode starten muss, damit diese mit einem Timer läuft. Und leider versteh ich auch 80% der Kommentare zum Quelltext in der MSDN nicht!



  • plizer schrieb:

    Versteh da fast nichts, aber für riesige Java-Projekte und ein Informatik-Studium-Abschluss unter Regelstudienzeit hats gereicht.

    tja, hättest du mal was vernünftiges studiert 😉
    ne, spass beiseite, hier ein kleines beispiel:

    #include <windows.h>
    #include <stdio.h>
    
    // diese funktion wird einmal pro sekunde von windows aufgerufen
    void __stdcall timerproc (HWND h, UINT msg, UINT id, DWORD time)
    {
        puts ("Tick");
    }
    
    int main()
    {
        // wir starten einen sekunden-timer
        SetTimer (0, 1, 1000, timerproc);
    
        // folgender quatsch muss sein, damit windoofs
        // die timerprozedur auch aufruft
        // in einer GUI anwendung ist sowas irgendwo schon vorhanden.
        for (;;)
        {
            MSG msg;
            GetMessage (&msg, 0, 0, 0);
            DispatchMessage (&msg);
        }
    }
    

    mach 'ne konsolenanwendung und poste den code da rein, dann haste etwas zum experimentieren.
    das mit der 'timerproc' kannst du auch in einer GUI anwendung machen, es muss nicht unbedingt eine message an die WndProc geschickt werden.
    🙂


Anmelden zum Antworten