Debug Assertion Failed für tooltip.cpp



  • hallo!
    vielleicht kann mir jemand weiter helfen:
    nur im debug modus (nicht release) kann ich zwar fehlerlos meine anwendung kompilieren und erstellen, bei der programmausführung kommt o.a. fehler. im debugprogramm selbst finde ich den 1.eintrag bei ASSERT(pWnd != NULL);
    obwohl ich schon alles mögliche probiert habe, kann ich den fehler nicht finden.
    nachdem tooltip eine rolle zu spielen scheint, mein code:

    BOOL CSeite1::PreTranslateMessage(MSG* pMsg) 
    {
    	if(IsWindow(m_ttipctrl.m_hWnd))
    	{
    		m_ttipctrl.RelayEvent(pMsg);					//Standard 
    	}
    	return CDialog::PreTranslateMessage(pMsg);
    }
    

    oder

    class CTabCtrlDlg : public CDialog
    {
    // Konstruktion, wurde durch Membervariable hinzugefügt!
    public:
    	CToolTipCtrl m_ttipctrl;
    	CTabCtrlDlg(CWnd* pParent = NULL);	// Standard-Konstruktor
    

    oder

    afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
    

    ich nehme an, hier wird irgendwo der fehler sein,
    bitte euch um hilfe,
    danke


  • Mod

    Bist Du Dir sicher, dass im Callstack PreTRanslateMessage drin steht?

    Der Code

    if(IsWindow(m_ttipctrl.m_hWnd))
    

    ist IMHO unsinnig.
    Es genügt einfach zu prüfen ob m_hWnd!=NULL ist!



  • hallo martin richter!
    bist du nett und erklärst mir deine fragen für mich verständlicher, denn deine meinung kann ich nicht richtig deuten und hilft mir auch nicht weiter,
    danke


  • Mod

    Meine Frage zielt darauf ab, wer und wo den Assert auslöst. Dass kannst Du beim ASSERT durch drücken von Wiederholen im Callstack Fenster sehen. Das ist ein Fenster des Debuggers.

    Mene Codeanmerkung ist wohl eindeutig. IsWindow hier zu verwenden ist absolut überflüssig. Die MFC garantiert (bei normaler Verwendung), dass ein CWnd mit seinem m_hWnd solange gültig ist bis es eben zerstört wird, dann wird m_hWnd NULL!



  • zum Wiederholen im Callstack Fenster:
    bitte erkläre mir das genauer!

    zu IsWindow:
    wie soll der code verändert werden?,
    danke für deine mühe



  • oldi schrieb:

    zum Wiederholen im Callstack Fenster:
    bitte erkläre mir das genauer!

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-120832.html 😉


  • Mod

    oldi schrieb:

    zum Wiederholen im Callstack Fenster:
    bitte erkläre mir das genauer!

    Siehe estartu's Post!

    zu IsWindow:
    wie soll der code verändert werden?,
    danke für deine mühe

    Das habe ich doch geschrieben 😕 : Es genüht m_hWnd gegen NULL zu prüfen!

    BOOL CSeite1::PreTranslateMessage(MSG* pMsg) 
    {
        if(m_ttipctrl.m_hWnd!=NULL)
        {
            m_ttipctrl.RelayEvent(pMsg);                    //Standard 
        }
        return CDialog::PreTranslateMessage(pMsg);
    }
    


  • danke euch. nur die änderung brachte mir nichts, der fehler kommt nach wie vor.
    werde mich noch einlesen!,danke vorerst


Log in to reply