Fensteraufruf



  • Hallo zusammen,
    ich hier ein leines problem,hab ein programm unter VC++ gechrieben wo ich von ein Hauptfenster durch Zwei Button zwei anderen fenstern anrufen kann.die fenster aufruf ist mit bolschen variablen verbunden dh. ist Mod=1 ruf eine fenster ist Mod=2 ruf den zweiten fenster.will jetzt aber mit ein drittten Button ein drittes fenster aufrufen wie geht das.

    merci alle



  • Boah... 😮
    Also, sofern ich dich richtig verstanden habe (was bei deinem Schreibstil nicht gerade einfach ist), dann könntest du uns schon Code zeigen, wie man ein Fenster aufruft.
    Dann mach das doch bitte mal. 🙂



  • Du mußt nur deine Bedingungen entsprechend anpassen (entweder als if-else-Kaskade oder als switch()).



  • hier hast du es:

    void Haupt::OnBnClickedButton1()
    {
    	CTestDlg dlg;
    	dlg.Mod=1;
    	dlg.DoModal();
    }
    
    void Haupt::OnBnClickedAuto()
    {
    	CTestDlg dlg;
    	dlg.Mod=0;
    	dlg.DoModal();
    }
    

    wenn das schwierig was meinst du wenn es um Multitasking geht 😉



  • Und genau das selbe mußt du auch in der Bearbeitung deines dritten Buttons machen. Allerdings solltest statt einem "Universaldialog", der je nach übergebenen Membern anders aussieht, lieber für jedes Problem eine eigene Dialogklasse anlegen.



  • lieber für jedes Problem eine eigene Dialogklasse anlegen.
    wie geht das wenn ich nur ein fenster hab



  • Du kannst im MFC beliebig viele Klassen einbauen - und dann kannst du selber entscheiden, wann welche dieser Klassen verwendet wird:

    void Haupt::OnBnClickedButton1()
    {
        CTestDlg dlg;
        dlg.DoModal();
    }
    
    void Haupt::OnBnClickedAuto()
    {
        CAutoDlg dlg;
        dlg.DoModal();
    }
    
    ...
    

    PS: Mich würde echt mal interessieren, wie bei dir die Arbeit IN der CTestDlg-Klasse aussieht - ich tippe auf eine riesige Sammlung an "if(mod==1)...else..."-Konstrukten 😉



  • Bei mir geht es nur darum ein paar sachen Ein bzw auszublinen je nach variable so sieht es aus:

    if (Mod==0)
    	{
    		M_Sensor1.ShowWindow(FALSE);
    		M_Sensor2.ShowWindow(FALSE);
    		M_Address.ShowWindow(FALSE);
    		m_Output.ShowWindow(TRUE);
    		m_leds.ShowWindow(TRUE);
    		m_POWER.ShowWindow(TRUE);
    		m_POW.ShowWindow(TRUE);
    		m_ERROR1.ShowWindow(TRUE);
    		m_ERROR2.ShowWindow(TRUE);
    		m_AUT.ShowWindow(TRUE);
    		m_CLOSED.ShowWindow(TRUE);
    		m_SENSEXT1.ShowWindow(TRUE);
    		m_SENSEXT2.ShowWindow(TRUE);
    		SENS21.ShowWindow(TRUE);
    		SENS22.ShowWindow(TRUE);
    		VALVE.ShowWindow(FALSE);
    		m_ERRORtext.ShowWindow(TRUE);
    		m_CLOSEDVER.ShowWindow(TRUE);
    		m_AUTOMAT.ShowWindow(TRUE);
    		m_SENSEXT.ShowWindow(TRUE);
    		m_SENS1.ShowWindow(TRUE);
    		m_VENTIL.ShowWindow(TRUE);
    		m_SENS2text.ShowWindow(TRUE);
    		SENS11.ShowWindow(TRUE);
    		SENS12.ShowWindow(TRUE);
    
    	}
    	if (Mod==1)
    	{
    		M_Sensor1.ShowWindow(TRUE);
    		M_Sensor2.ShowWindow(TRUE);
    		M_Address.ShowWindow(FALSE);
    		m_Output.ShowWindow(TRUE);
    		m_leds.ShowWindow(FALSE);
    		m_POWER.ShowWindow(FALSE);
    		m_POW.ShowWindow(FALSE);
    		m_ERROR1.ShowWindow(FALSE);
    		m_ERROR2.ShowWindow(FALSE);
    		m_AUT.ShowWindow(FALSE);
    		m_CLOSED.ShowWindow(FALSE);
    		m_SENSEXT1.ShowWindow(FALSE);
    		m_SENSEXT2.ShowWindow(FALSE);
    		SENS11.ShowWindow(FALSE);
    		SENS21.ShowWindow(FALSE);
    		SENS22.ShowWindow(FALSE);
    		VALVE.ShowWindow(FALSE);
    		m_ERRORtext.ShowWindow(FALSE);
    		m_CLOSEDVER.ShowWindow(FALSE);
    		m_AUTOMAT.ShowWindow(FALSE);
    		m_SENSEXT.ShowWindow(FALSE);
    		m_SENS1.ShowWindow(FALSE);
    		m_VENTIL.ShowWindow(FALSE);
    		m_SENS2text.ShowWindow(FALSE);
    		SENS12.ShowWindow(FALSE);	
    	}
    


  • Igitt, das sieht ja scheußlich aus - das solltest du doch besser in zwei unabhängige Dialogklassen aufteilen, die jede nur ihre eigenen Elemente "kennt".

    PS: Bitte pack deine Codes in cpp-Tags. Danke.



  • cpp-Tags wie komme ich ran bin neue in VC++ und forumkontakte



  • Unter den Smilies ist ein Knopf wo C/C++ draufsteht, den drücken, Code eingeben, nochmal drücken. 🙂


Anmelden zum Antworten