Variablen übergeben



  • Hallo Leute,

    Ich möchte gerne 3 Variablen von einem Dialog in den anderen übergegen.

    In Dialog A drücke ich auf einen Button
    In Dialog B sollen im Konstructor die Variablen verwendet werden um Ereignisse auszulösen.

    Kann mir bitte jemand helfen. Ich bin neu in der Materie und im Forum habe ich nicht das passende gefunden.

    Gruß Tigermoon

    Aufruf meines neuen Dialogs per Button

    void CVokabeltrainerDlg::OnBnClickedButton1()
    {
        Ueben dlgueben(this);
        dlgueben.DoModal();
    }
    

    Mein Konstruktor im neuen Dialog

    Ueben::Ueben(CWnd* pParent /*=NULL*/)
    	: CDialog(Ueben::IDD, pParent)
    	, w_ueben(0)
    	, language(_T(""))
    	, words(_T(""))
    {
    	if(radio_lng == 0)
    	{
    		language = "Deutsch -> Englisch";
    	}
    	if(radio_lng == 1)
    	{
    		language = "Englisch -> Deutsch";
    	}
    	if(radio_lng == 2)
    	{
    		language = "Deutsch -> Französich";
    	}
    	if(radio_lng == 3)
    	{
    		language = "Französich -> Deutsch";
    	}
    }
    


  • Hallo,

    du müßtest einfach nur den Konstruktor erweitern, so dass die drei Variablen dort als Parameter angegeben werden:

    Deklaration:

    Ueben(int v1, const CString& v2, const CString& v3, CWnd* pParent /*=NULL*/)
        : CDialog(Ueben::IDD, pParent)
        , w_ueben(v1)
        , language(v2)
        , words(v3)
    

    wobei ich nur angenommen habe, dass w_ueben, language und words die drei Variablen sind, die Werte aus dem aufrufenden Dialog bekommen sollen und vom Typ int bzw. CString sind.

    MfG,

    Probe-Nutzer



  • DoModal() überschreiben und bei aufruf dieser den Wert übergeben.



  • 233r schrieb:

    DoModal() überschreiben und bei aufruf dieser den Wert übergeben.

    kompiler sagt das ich DoModal nicht überladen kann 😞



  • Probe-Nutzer schrieb:

    Hallo,

    Ueben(int v1, const CString& v2, const CString& v3, CWnd* pParent /*=NULL*/)
        : CDialog(Ueben::IDD, pParent)
        , w_ueben(v1)
        , language(v2)
        , words(v3)
    

    der konstruktor kann keine werte annehmen 😞



  • Warum nicht? Irgendwelche Fehlermeldungen?

    MfG,

    Probe-Nutzer



  • Leg dir für deinen Unterdialog Membervariablen an und verwende die.
    Dazu musst du dir eine CDialog-Klasse erstellen (z.B. CMyDialog) und dem Dialog im Hauptdialog eine Variable zuweisen:

    CMyDialog dlgMyDlg;
    

    und setzt dann die Variablen, die du brauchst.

    dlgMyDlg.var1 = 1; //int
    dlgMyDlg.var2.SetString(_T("test")); //CString
    dlgMyDlg.var3.SetString(_T("ABC")); //CString
    

    und dann per Button DoModal aufrufen. Die Variablen sind dann danke Member immer verfügbar und änderbar. Dann brauchst du dich nicht mit Konstrukuren rumschlagen.


Anmelden zum Antworten