Event nach Zeit



  • alsi wie wertet man die nachricht WM_TIMER aus?



  • helmut a. schrieb:

    alsi wie wertet man die nachricht WM_TIMER aus?

    Hast du so ein OnTimer wie du oben gepostet hast?
    Was willst du denn alle Sekunde machen?

    Schreib in die Funktion (zu Demozwecken) doch mal:

    AfxMessageBox("Tick!");
    


  • ja mein problem ist das ich das man das ja irgendwie mit hilfe der Nachrichtenzuordnungstabellen des klassenassistenten die funktion WM_TIMER erstellt.

    ich arbeite aber mit visual studio 2005! und da weiß ich nicht so ganz wie ich die nachricht erstelle?!

    startet der die funktion ontimer eigentlich automatisch?

    nun sitz ich den ganzen tag davor nun peil ich auch gar nichts mehr..



  • also in der header hab ich nun:

    public:
    	unsigned int ID_TIMER;
    	void OnTimer(UINT nIDEvent);
    

    in der .cpp

    #define MYTIMER 10000
    bla...
    
    void CEmpfaengerDlg::OnBnClickedButton4()
    {	
    	machwas.InsertString(0,"set");
    	SetTimer(MYTIMER,1000,NULL); // 1000 ms
    
    }
    
    void CEmpfaengerDlg::OnTimer(UINT nIDEvent)
    {
    
    	machwas.InsertString(0,"juhu");
    
    }
    

    das müßte doch schon funktionieren oder?



  • Ich würd sagen ja
    Allerdings in der Funktion lieber den ID abfragen also:

    void CEmpfaengerDlg::OnTimer(UINT nIDEvent) 
    { 
        if(nIDEvent ==  MYTIMER)
        {
             machwas.InsertString(0,"juhu"); 
        }
    
    }
    


  • Das sieht soweit gut aus, nur leider hast du die MessageMap nicht gepostet und daher weiß ich nicht, ob der Eintrag dort vorhanden ist.

    Falls der Eintrag dort fehlt, wird die OnTimer nicht aufgerufen. Ist er dort, passiert das automatisch.
    Wenn der fehlt gebe ich dir Morgen früh die fehlende Zeile. 🙂



  • estartu schrieb:

    Das sieht soweit gut aus, nur leider hast du die MessageMap nicht gepostet und daher weiß ich nicht, ob der Eintrag dort vorhanden ist.

    Falls der Eintrag dort fehlt, wird die OnTimer nicht aufgerufen. Ist er dort, passiert das automatisch.
    Wenn der fehlt gebe ich dir Morgen früh die fehlende Zeile. 🙂

    jahhhh genau das brauch ich!!!
    das ist das wo ich hacke..
    zum aus de rhaut fahren.. morgen fürh sagt er...... argh 🙂

    na gut.. dann geh ich nun nach hause! 🙂

    danke schonmal für die gedult heute!
    ich freu mich auf morgen 😉



  • sooooo.. konnte es dann noch nicht lassen....
    habs! das war das stichwort was ich gebraucht hab!

    also das

    ON_WM_TIMER() hat gefehlt!

    hättest mir das nciht heut morgen sagen können? 😉
    und dafür den fast ganzen tag geopfert....
    was soll nur mal aus mir werden 😉

    vielen danke estartu! 👍



  • helmut a. schrieb:

    was soll nur mal aus mir werden 😉

    Ein ausdauernder Fehlersucher. 🙂



  • je laenger man nach einen fehler sucht desto gluecklicher ist man ihn gefunden zu haben

    stimmt - aber ein scheiss spruch #gg



  • Jepp. 👍
    Und wenn das nächste Mal ne Nachricht nicht ankommt, hat er mindestens ne Idee, wodran es liegen kann.



  • jaahh.. und wie glücklich ich war 😉

    Über die Nachrichten hatte ich mir vorher nie gedanken gemacht, das gin under VC6 ja auch ganz von allein..

    das bei WM_TIMER dann Ontime aufgerufen wird.. ist das irgendwo fest definiert?



  • helmut a. schrieb:

    das bei WM_TIMER dann Ontime aufgerufen wird.. ist das irgendwo fest definiert?

    Ja, in ON_WM_TIMER()

    #define ON_WM_TIMER() \
    	{ WM_TIMER, 0, 0, 0, AfxSig_vw, \
    		(AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnTimer },
    

    Klick mal mit der rechten Maustaste drauf. Da müsste es dann "Gehe zu Definition" geben.

    Und dass es im VC2005 keine Hilfestellung mehr beim Anlegen von Nachrichtenfunktionen gibt, kann ich nicht glauben. 😮



  • wenn das jemand gefunden hat kann er das ja posten..

    und nun :xmas1:



  • 1. Headerdatei oeffnen
    2. klick auf den klassen namen sodass der cursor irgendwo darin steckt
    3. zu der propertie page gehen (da steht "C++ - (Name) - File - FullName - IsAbstract - usw")
    4. in der page ist oben eine toolbar, rechts neben den kleinen blitz ist sowas wie ein "fenster"
    5. auf dieses fenster klicken
    6. in der auftauchenden liste die message aussuchen
    7. rechts daneben ins leere feld klicken sodass ein kleiner pfeil erscheint
    8. auf den kleinen pfeil klicken und es erscheint eine zeile mit nem namen
    9. auf den namen klicken - fertig die message ist erstellt


Anmelden zum Antworten