Dialogbasierende Anwendung
-
Hi habe eine Dlgbasierende Anwendung in der rufe ich mit DoModal() ein 2 Dialogfenster auf meine Frage jetzt wie kann ich in den 2 Fenster auf Variabeln bzw. Funktion des ersten Fensters zugreifen?
MfG Hoffi
-
du übergibst die variablen an das 2 fenster
so ähnlich wie mit dem öffnen des zweiten fensters
-
Kann man nicht irgendwie mit ein Pionter auf das erste Fenster drauf zugreifen?
-
Schreib Dir in der 1. Klasse Get-Methoden in den Du Deine Variable zurückgibst. Die Get-Methoden rufst Du dann in der 2. Klasse auf.
CDialog1 dlg1; CString VariableDlg2 = dlg1.GetVariableDlg1();In die Getfunktion schreibst Du
return VariableDlg1;Hoffe es hilft Dir.
-
Wenn ich das so mache erzeuge ich doch nur eine neue Instanz meiner Dialogklasse in der dann nicht die aktuellen Werte des ersten Dialogfeldes stehen.
-
class CDialog1 { public: CDialog* GetDialogPointer() { return this; } void Test() { AfxMessageBox("bla"); } }; // blablabla class CDialog2 { public: CDialog2(CDialog* pDialog1)//hier fehlen natürlich noch andere parameter und der basisklassenkonstruktor { m_pDialog1=pDialog1; m_pDialog1->Test(); } protected: CDialog1 *m_pDialog1; }; // blabla.... //irgendwo im code..... CDialog1 dlg1; CDialog2 dlg2(&dlg);.......... könnte sowas funzen ????
-
class CDialog1 { public: void SetPointer(CDialog2* pDialog) { m_pDialog2=pDialog2; } void Test() { AfxMessageBox("Dialog2"); } private: CDialog2 *m_pDialog2; }; class CDialog2 { public: void SetPointer(CDialog1* pDialog) { m_pDialog1=pDialog; } void Test() { AfxMessageBox("Dialog2"); } private: CDialog1 *m_pDialog1; }; BOOL CMyApp::InitInstance() { CDialog1 dlg1; CDialog2 dlg2; dlg1.SetPointer(&dlg2); dlg2.SetPointer(&dlg1); dlg1.DoModal(); dlg2.DoModal(); return TRUE; }das könnte auch funktionieren !
Du musst dir halt noch methoden zum übergeben deiner Variablen schreiben !