Von CApp Funktion der CDlg starten



  • Ich verzweifle daran aus meiner InitInstance (CTestApp) einen Aufruf einer
    Funktion zu starten, die unter CTestDlg als verbinden(); definiert ist.

    Kann mir bitte jemand von euch sagen wie ich die beiden Klassen miteinander
    kommunizieren lassen kann ? Ich muss doch jetzt sowas wie einen Zeiger
    von CTestApp auf CTestDlg geben oder ?



  • Du brauchst auf jeden Fall eine Instanz des Dialoges.

    Rufst du den denn aus der InitInstance auch auf? Dann wärs einfach, zeig mal den Code. 🙂
    Ansonsten: Von wo rufst du den Dialog denn auf? Wie liegt das zeitlich zum verbinden() ?



  • Hallo !

    Ich habe folgenden Code in der InitInstance:

    AfxEnableControlContainer();
    //ab hier...
    CCommandLineInfo cmdInfo;  
    ParseCommandLine(cmdInfo);  
    char c;  
    CString s;  
    cmdInfo.ParseParam(&c,TRUE,TRUE);  
    if(cmdInfo.m_strFileName != "\\auto")  //mein parameter lautet auto
    {  
    //---
    verbinden(); // Funktion liegt in CTestDlg wie mache ich die bekannt ?
      }
    } 
    
    cmdInfo.m_strFileName = "Test1.exe";
    


  • AfxEnableControlContainer();
    //ab hier...
    CCommandLineInfo cmdInfo;  
    ParseCommandLine(cmdInfo);  
    char c;  
    CString s;  
    cmdInfo.ParseParam(&c,TRUE,TRUE);  
    if(cmdInfo.m_strFileName != "\\auto")  //mein parameter lautet auto
    {  
    CTestDlg testDlg;
    testDlg.verbinden();
      }
    } 
    
    cmdInfo.m_strFileName = "Test1.exe";
    

    So gehr das. Ich hoffe nur, dass du nicht noch irgendwelche Membervariablen, die in verbinden() gesetzt werden, oder so später brauchst - aber das wirst du gleich merken, dann müssen wir weiter sehen. 🙂



  • Danke. Es funktioniert einwandfrei !
    Was müsste ich beachten wenn tatsächlich noch Membervariablen
    aus CTestDlg in verbinden(); angegeben worden wären ?
    Wie würde ich die dann in CTestApp bekannt machen ?



  • Das bekannt machen wäre nicht das Problem, sondern, wenn du irgendwo später auf z.B. die im Dialog gespeicherte Verbindung zurückgreifen willst.

    Der Dialog hört nämlich an der schließenden } von der if auf zu existieren. ⚠

    Würdest du das weiter verwenden wollen, müßtest du dir entweder den Dialog oder die interessante Variable weitergehend speichern, wo sie nicht gleich aus dem Speicher fliegt. (Siehe dazu: Gültigkeitsbereiche/Lebenzeiten von Variablen)

    Wie das geht, wird hier oft beschrieben, aber die Stichworte sind public oder Get-Funktion. 🙂


Anmelden zum Antworten