DoModal(); ausgetrickst. Aber ich will das doch garnicht!
-
wahrscheinlich ein typischer Anfängerfehler. Ich hab mich irgendwie selbst reingelegt
In meiner Klasse CEinlesenDlg habe ich die Funktion Protokol(), welche korrekt mit m_DStoffliste.DoModal(); ein neues Dialogfenster öffnet.
void CEinlesenDlg::Protokol() { PKontaktLabeo m_PKontakt(this); int keinStoff= m_PKontakt.FindStoff(); //+--------------------------------------------------------------------------+ //+ Wenn es Stoff gibt der nicht, oder nicht ausreichen da ist, dann Anzeigen+ //+--------------------------------------------------------------------------+ if (keinStoff!=0) { DStoffliste m_DStoffliste(this); m_DStoffliste.DoModal(); } }ich rufe diese Fkt jedoch aus einer anderen Klasse (mit eigenem Dialogfenster) auf m_pPar->Protokol(); auch das funktioniert. Leider hat das neue Dialogfenster nicht mehr die normalen Eigenschaften von DoModal(). ich kann nämlich einfach auf das Fenster von DVST_Beschreibung Beschreibung gehen und ein zweites Fenster von DStoffliste öffnen.
DVST_Beschreibung::DVST_Beschreibung(CWnd* pParent /*=NULL*/) : CDialog(DVST_Beschreibung::IDD, pParent) { m_pPar = (CEinlesenDlg*)pParent; //{{AFX_DATA_INIT(DVST_Beschreibung) // HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein //}}AFX_DATA_INIT } void DVST_Beschreibung::OnVSTProtokolle() { OnVSTSpeichern(); m_pPar->Protokol(); }Wie kann ich dieses verhindern?
-
DStoffliste m_DStoffliste sollte eine Membervariable von CEinlesenDlg sein...
Devil
-
Für das korrekte verhalten iust nur notwendig, das "this" (im DoModal-Aufruf) tatsächlich der DStoffliste-Dialog ist. Hier muß (muß muß muß) das Owner-Fenster des modalen Dialoges angegeben werden.
Wo hast du m_pPar her?