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.