Problem mit static_downcast



  • GetActiveDocument liefert mir eine Speicheradresse. Aber beim Aufruf von GetActiveDocument()->IsKindOf(RUNTIME_CLASS( CMyDoc )) kracht er auch an die Wand.


  • Mod

    Lass das Doc eine Nachricht an AfxGetMainWnd senden...
    Ich seheda kein Problem. Keine Klasse muss in diesem Fall was voneinander wissen...



  • Martin Richter schrieb:

    Lass das Doc eine Nachricht an AfxGetMainWnd senden...
    Ich seheda kein Problem. Keine Klasse muss in diesem Fall was voneinander wissen...

    Du meinst also mit Sendmessage/Postmessage das Mainframe informieren und als Parameter den Messwert übergeben?



  • Problemcaster schrieb:

    GetActiveDocument liefert mir eine Speicheradresse. Aber beim Aufruf von GetActiveDocument()->IsKindOf(RUNTIME_CLASS( CMyDoc )) kracht er auch an die Wand.

    Was meinst du mit "kracht an die Wand". Schlägt ne Assertion zu oder was? Gibts keine Detailiertere Fehlerbeschreibung?


  • Mod

    Problemcaster schrieb:

    Martin Richter schrieb:

    Lass das Doc eine Nachricht an AfxGetMainWnd senden...
    Ich seheda kein Problem. Keine Klasse muss in diesem Fall was voneinander wissen...

    Du meinst also mit Sendmessage/Postmessage das Mainframe informieren und als Parameter den Messwert übergeben?

    Ja! Es gibt auch Tausend andere Möglichkeiten:
    Dein Thread sendet dem Mainframe eine Nachricht und gibt einen Interface zeiger zurück mit dem Du die Statuszeile bearbeitest.

    Zumindest gibt es x-Möglichkeiten in dem nicht die eine Klasse alles von der anderen wissen muss und Abhängigkeiten geschafen werden, die nicht sein müssen...


  • Mod

    David_pb schrieb:

    Problemcaster schrieb:

    GetActiveDocument liefert mir eine Speicheradresse. Aber beim Aufruf von GetActiveDocument()->IsKindOf(RUNTIME_CLASS( CMyDoc )) kracht er auch an die Wand.

    Was meinst du mit "kracht an die Wand". Schlägt ne Assertion zu oder was? Gibts keine Detailiertere Fehlerbeschreibung?

    Wenn GetActiveDocument() NULL liefert, dann muss Dein Code auch zu einem Crash führen... und das ist hier das Problem. GetActiveDocument liefert NULL!



  • Martin Richter schrieb:

    David_pb schrieb:

    Problemcaster schrieb:

    GetActiveDocument liefert mir eine Speicheradresse. Aber beim Aufruf von GetActiveDocument()->IsKindOf(RUNTIME_CLASS( CMyDoc )) kracht er auch an die Wand.

    Was meinst du mit "kracht an die Wand". Schlägt ne Assertion zu oder was? Gibts keine Detailiertere Fehlerbeschreibung?

    Wenn GetActiveDocument() NULL liefert, dann muss Dein Code auch zu einem Crash führen... und das ist hier das Problem. GetActiveDocument liefert NULL!

    Das bestreitet Problemcaster ja permanent.



  • Martin Richter schrieb:

    Wenn GetActiveDocument() NULL liefert, dann muss Dein Code auch zu einem Crash führen... und das ist hier das Problem. GetActiveDocument liefert NULL!

    Ja eben nicht. GetActiveDocument liefert 0x00411479. Blöd ist, dass das eben nicht die gleiche Adresse ist die GetDocument im CView zurück gibt.

    David_pb schrieb:

    Was meinst du mit "kracht an die Wand". Schlägt ne Assertion zu oder was? Gibts keine Detailiertere Fehlerbeschreibung?

    Ja, es gibt einen Assert.



  • Was für eins? Die Dinger sind dazu da das man Informationen aus ihnen ziehen kann...



  • David_pb schrieb:

    Was für eins? Die Dinger sind dazu da das man Informationen aus ihnen ziehen kann...

    Das ist nicht das Problem. Ich möchte eigentlich eine Erklärung, warum STATIC_DOWNCAST einen NULL-Zeiger zurückgibt. Laut Beschreibung müsste in der Debug-Version ein ASSERT kommen, wenn er es nicht umwandeln kann.



  • Dann step eben mal durch, da wirst du sehen wo's hakt.


Anmelden zum Antworten