Zugriff auf Objekt



  • Hi @ all

    In meiner SDI habe ich in der Klasse C..View ein Objekt auf eine Klasse erstellt. Jetzt will ich aus einem anderem Dialog "CMyDialog" auf dieses Objekt zugraeifen

    a: Wie mache ich dies am besten,

    b: Warum kann ich die Header-Datei von C..View in meine Dialogklasse nicht includieren ????

    Gruß



  • Kann mir denn niemand helfen ???



  • // MyDialog.h
    class C..View;  // Vorwärtsdeklaration
    class CMyDialog : public CDialog
    {
    // Konstruktor
    CMyDialog( C..View* pView, ...) : CDialog(...)
    {
      ASSERT( pView);
      m_pView = pView;
    }
    protected:
      C..View* m_pView;
    };
    
    // CMyDialog.cpp
    #include "C..View.h"
    
    // C..View.cpp
    void C..View::OnMyDialog()
    {
      CMyDialog dlg( this, ...);
    }
    

    Ausführlich genug?



  • Das inkludieren sollte eigentlich funktionieren, hast es vielleicht nur an falscher Stelle gemacht. Wenn dies geklappt hat könntest du auch so auf deine ViewKlasse zugreifen :

    CFrameWnd* pFrame = (CFrameWnd )(AfxGetApp()->m_pMainWnd);
    CMy123View
    pView = (CMy123View*)(pFrame->GetActiveView());

    und dann einfach mit pView-> auf die benötigten Daten zugreifen.



  • Leider kann ich die C..View nicht includieren, somit auch nicht auf das dort stehende Objekt.

    Gibst es denn noch andere Möglichkeiten soetwas zu realisieren ???

    Gruß



  • So gehts auch, ist aber ein wenig umstndlicher :

    http://cui.unige.ch/OSG/people/Past/fuentes/Mfc/HowTo_8.html



  • @ hoschi

    Es nicht das erste mal dass ich C..View nicht includieren kann.
    Nach dem include sind plötzlich die ID's dieser zwei Dialoge nicht mehr bekannt !!!!



  • Wozu schreibe ich eigentlich, wie's geht, wenn es sich niemand anschaut???
    😡 😡 😡



  • ReneG hat natürlich recht, seine Lösung ist die eleganteste 😉



  • @ Rene

    Hi,
    nach dem Muster habe ich es auch schon mehrmals versucht, aber wie gesagt, es hängt immer bei dem include von CView ????



  • Also Du hast wirklich in MyDialog.cpp inkludiert und nicht in MyDialog.h ??
    Und das Inklude hast Du NACH #include "stdafx.h" gemacht???

    Dann hast Du irgendein Problem im Header, bei mir hat das immer gefunzt !


Log in to reply