werte von klasse an klasse übergeben ?



  • hallo,

    ich habe schon lange gegoogelt und hier im forum gesucht aber habe nichts gefunden was ich gebrauchen kann. Erstmal vorweg ich kann so gut wie gar nicht programmieren aber muss es nun machen auf meiner jetzigen abteilung.

    also ich habe folgendes: ein Programm mit mehreren Dialogfeldern.
    ich habe in beiden Dialogen (nur die beiden werden benötigt) EditFelder, die
    in der OnInitDialog initialisiert werden und Werte bekommen.

    !nun möchte ich die Werte von den editdingern aus dem Dialogfenster(child) welches sich vom hauptfenster(parent) öffnet an das Hauptfenster übergeben.
    Das Haupfenster besitzt wie gesagt auch einige EditFelder die dann mit den Werten gefüllt werden sollen!

    naja lacht mich nicht aus habs halt net so mit dem proggn '-'
    ich hoffe es ist einigermaßen verständlich geschrieben.
    ich würde mich echt freuen wenn ihr mir helfen könnt 😃

    schonmal Danke im vorraus
    greets sNid0r



  • Am einfachsten und auch am Besten geht das mit Zugriffsfunktion.
    Also im ChildDlg 2 Funktionen
    CString GetValue1()
    {
    return m_ErsterString;
    }

    CString GetValue2()
    {
    return m_ZweiterString;
    }

    und im Hauptfenster diese beiden Funktionen aufrufen



  • Warum schreibst du nicht ein paar Klassen, die die eigentliche Daten enthalten (keine GUI-Elemente), kannst auch eine static member benutzen, wenn die in allen Objekten die selbe(n) sein sollte.

    Dann kannst du doch ob von deinem Dialogen oder von dem Parent-Fenster auf die selben Objekte zugreifen, die verändern, etc.
    Z.B.: Parent-Fenster hat/ist eine Factory mit den Objekten, ein Dialog fordern mal eins, verändert ihn, dann ist er immer noch beim Parent da..
    Wo ist denn das Problem?



  • deinedlgklasse  dlgklasse;
    
    // Hier kannst du variablen deiner Dialogklasse füllen.
    dlgklasse.einevariable = "hallo";
    
    dlgklasse.DoModal();
    
    //hier kommt der Dialog nach dem schließne wieder raus.
    //Solange die Instanz noch gültig ist hat man auch zugriff.
    
    CString meinevar = dlgklasse.einevariable;
    


  • DaDings schrieb:

    Am einfachsten und auch am Besten geht das mit Zugriffsfunktion.
    Also im ChildDlg 2 Funktionen
    CString GetValue1()
    {
    return m_ErsterString;
    }

    CString GetValue2()
    {
    return m_ZweiterString;
    }

    und im Hauptfenster diese beiden Funktionen aufrufen

    da musst du nur noch eins hinzufügen

    m_TextBox1 GetValue1();
    UpdateData(FALSE);

    m_TextBox2 GetValue2();
    UpdateData(FALSE);

    Das Updata Data ist wichtig, da sonst die Daten im Dialog nicht geändert werden.

    Das False steht dafür, dass die Daten aus dem speicher in das Fenster kommt.

    Solltest du UpdataData(TRUE) benutzen, so werden die Daten, die du in die Eingabefenster schreibst in deine Variablen kopiert werden, also genau andersrum 😉

    wenn du was nicht verstanden hast, dann frag einfach der pm nach 🙂



  • danke für die antworten hat mir zwar "noch" nicht wirklich geholfen aber ein wenig schlauer bin ich schon ^^
    ich soll es nun doch ein wenig anders machen.
    und zwar habe ich jetzt im header des child ein struct
    die daten sollen im parent unterschiedlich ausgegeben werden
    mal als int mal als double
    --------
    struct TSignals_Frequency
    {
    int dataX;
    double dataY;

    };
    --------
    dann hab ich noch 2 befehle bekommen:
    M_embervariable.GetWindowText(StringData);
    DataX = atof(StringData); // ich weiss nur der is für die typumwandlung

    [mal so zwischendurch ich mache mfc noch nicht lange, c++ kenn ich schon ein wenig länger habe auch schon div. bücher angefangen zu lesen aber glaub irgendwas fehlt bei mir]

    habe aber keine ahnung wo die zeilen hinkommen.
    gut ich brauche dann jetzt im child eine funktion und im parent eine funktion die aufgerufen wird richtig ? 🙂
    --------
    "CString GetValue1()
    {
    return m_ErsterString;
    }

    CString GetValue2()
    {
    return m_ZweiterString;
    }"
    --------
    wofür stehen denn die beiden strings?

    btw ich bin zu blöd für pm 😞
    liegt des an meinem browser!? ^^ ich sehe hier nirgends nen pm link unt hab sonst nix gefunden 😉


Anmelden zum Antworten