Parameter Übergabe zwischen zwei Klassen



  • Habs jetzt so probiert...

    void CNewTermEmuDlg::OnButton2()
    {
    ozp01 = "123;
    ozp02 = "111";
    ozp03 = "222";
    ozp04 = "333";
    ozp05 = "484";
    ozp06 = "665";
    ozp07 = "444";
    ozp08 = "333";
    ozp09 = "666";

    CNewTermEmuDlg * jetzt = new CNewTermEmuDlg;

    COnlinezeitpunkt test2 = new COnlinezeitpunkt;

    test2.SetVars( this );
    }
    ...nun bekomme ich aber in der Funktion SetVars beim Befehl :

    display_ozp01.SetWindowText( p->ozp01 );
    ...

    die Fehlermeldung :
    Debug Assertion Failed!
    File: winocc.cpp
    Line: 229

    Und dann Unknown Software Exception...

    Was mach ich falsch??



  • Also ich würde dir folgendes Vorschlagen.

    In deiner Klasse, die die Variablen anzeigen sollen definierst du Global ein LPVOID m_pKlasse.
    Jetzt fügst du folgende Zeile in den Konstruktor dieser Klasse ein.
    m_pKlasse = NULL;

    Bevor der Dialog angezeigt werden soll übergibst du den Pointer der Klasse die die Daten enthält wie folgt !
    Entweder
    p.m_pKlasse = x;
    oder
    p.m_pKlasse = this;
    oder du schreibst dir wieder eine Funktion.

    Nun rufst du zum Beispiel DoModal() des Dialoges auf der angezeigt werden soll !

    In die Funktion OnInitDialog dieses Dialoges greifst du nun auf m_pKlasse zu und zwar wie folgt !

    KlassenName* m_pKlassenInstanz = (KlassenName*)m_pKlasse
    KlassenName = Name der Klasse die die Variablen enthält !

    so und nun kannst du deine EditFelder mit SetWindow füllen.
    Dazu benutzt du m_pKlassenInstanz->.... als Wert !

    Sollte jetzt eigentlich funktionieren und sauber sein !

    [ Dieser Beitrag wurde am 02.12.2002 um 13:19 Uhr von DaDaywalker editiert. ]



  • Irgendwie will das hier alles nicht funktionieren,
    nun hab ichs so gemacht :

    Klasse1

    void CNewTermEmuDlg::OnButton2()
    {
    COnlinezeitpunkt test = new COnlinezeitpunkt;
    test.m_pKlasse = this;

    m_ozp.DoModal();
    }

    Klasse 2:

    BOOL COnlinezeitpunkt::OnInitDialog()
    {
    CDialog::OnInitDialog();

    CNewTermEmuDlg * testinstanz = (CNewTermEmuDlg)m_pKlasse;

    return TRUE;
    }
    --> ergibt Fehlermeldung :
    error C2440: 'type cast' : 'void *' kann nicht in 'class CNewTermEmuDlg' konvertiert werden Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig

    Das kann doch nicht so schwer sein...oder sollt ich doch besser Kindergärtner werden und mich dem Coden abwenden... 😮



  • Original erstellt von Casimus:
    **Irgendwie will das hier alles nicht funktionieren,
    nun hab ichs so gemacht :

    Klasse1

    void CNewTermEmuDlg::OnButton2()
    {
    COnlinezeitpunkt test = new COnlinezeitpunkt;
    test.m_pKlasse = this;

    m_ozp.DoModal();
    }

    Klasse 2:

    BOOL COnlinezeitpunkt::OnInitDialog()
    {
    CDialog::OnInitDialog();

    CNewTermEmuDlg * testinstanz = (CNewTermEmuDlg)m_pKlasse;

    return TRUE;
    }
    --> ergibt Fehlermeldung :
    error C2440: 'type cast' : 'void *' kann nicht in 'class CNewTermEmuDlg' konvertiert werden Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig

    Das kann doch nicht so schwer sein...oder sollt ich doch besser Kindergärtner werden und mich dem Coden abwenden... 😮**

    Naja wie wäre es denn wenn du bei (CNewTermEmuDlg*)m_pKlasse hinschreiben würdest dann würde es funktionieren.

    BOOL COnlinezeitpunkt::OnInitDialog()
    {
    CDialog::OnInitDialog();

    CNewTermEmuDlg * testinstanz = (CNewTermEmuDlg)m_pKlasse;

    ////////////////////////////////////////////////////////////////////////////
    Du solltest noch überprüfen ob m_pKlasse nicht NULL ist.
    if (m_pKlasse)
    { // jetzt felder belegen

    }
    else
    {
    // Fehlermeldung z.B

    }

    ////////////////////////////////////////////////////////////////////////////
    Hier müssen aber nun die Felder belegt werden denn ansonsten ist testinstanz
    nicht mehr gültig !
    ////////////////////////////////////////////////////////////////////////////

    return TRUE;
    }



  • Okay ich gebs auf...es will nicht klappen.
    Dann muss ich mir was andres überlegen...
    das Problem quasi umgehen...😡 😡 😡

    BIG THX 2 DaDaywalker & devil81



  • Mensch jung dat kann doch nicht so schwer sein schick mir mal das Projekt als zip gepackt dann schau ich mir das mal an !



  • Okay müsste da sein... :p



  • Lern doch erst mal C/C++ .........



  • Original erstellt von <->:
    Lern doch erst mal C/C++ .........

    Das wäre wohl das beste...

    Devil



  • He zu diesem Thema gibt es jede Menge in der datenbank

    Versuche es mal unter Suchen

    Andreas


Anmelden zum Antworten