Timer in Abgeleiteter Klasse von CWnd starten



  • Hallo an alle,

    ich habe folgendes Problem. Ich brauche in einer Klasse XY die für sich vollkommend selbstständig laufen soll ein Timer.

    Spricht, Klasse wird Instanziert. Timer wird gestartet im Konstuktor, alle 500 ms soll die OnTimer der Klasse XY aufgerufen, und z.B eine Message an das die View versendet.
    Im Desturktor wird der Timer dann wieder gestoppt.

    Als Elternklasse habe ich die CWnd benutzt. Wenn ich jetzt aber im Konsturktor der Klasse XY SetTimer machen möcht knallt es immer in der afxwin2.inl line: 182

    Wie kann ich das beheben, so das der Timer läuft. :?

    Hier mal der Code für die SetTimer im Konstruktor

    CXTalkCom::CXTalkCom(CWnd* pParent)
    : m_uiTimer(0)
    , m_i(0)
    {
      ...
    	if (this->SetTimer(ID_XXX_TIMER,500,NULL) != ID_XXX_TIMER)
    	{
    		AfxMessageBox("Timer inititalization failed");
    	}
      ...
    }
    

    Hier mal der Code für die OnTimer in der Klasse CXCTalkCom

    void CXTalkCom::OnTimer(UINT nIDEvent)
    {
            ....
            int XX= GetXYZ();	
            ....
    	m_pParent->PostMessage(WM_NEW_XX(WPARAM)XXX);
    	CWnd::OnTimer(nIDEvent);
    }
    

    Danke im Voraus schon mal,

    Gruss Muchte



  • Zeig bitte mal: afxwin2.inl line: 182
    Und definiere "knallt".

    Meine Vermutung ist: Das Fenster existiert noch nicht.



  • Ahhhh das tut natürlich weh!!!!!🙄

    Sollte natürlich erst mal ein create machen, sonst geht ja der timer auch nicht. Da das fenster ja nicht sichtbar sein soll hatte ich daran nicht gedacht.

    Danke vielmals

    Gruss



  • Kein Problem. 🙂
    Mir kam die Zeilenangabe nur so bekannt vor. 😃


Anmelden zum Antworten