Dialogfeld im Dialogfeld öffnen



  • Als absoluter Newbie habe ich folgendes Problem:
    In meinem Programm will ich eine Kontrollschleife einfügen, die dafür sorgt, dass Quelldatei und Zieldatei nicht identisch sein dürfen, bevor eine Berechnung ausgeführt wird. Sind die Pfade der Dateien dennoch gleich, möchte ich ein Fenster aufpoppen lassen, in dem die aktuellen Pfade dargestellt werden und man die Möglichkeit hat, diese zu ändern.

    Das Fenster habe ich schon erzeugt und in meine Anwendung eingebunden. Nun weiß ich nur nicht so richtig, wie ich dieses Fenster aufrufe. (In den Tutorials und Büchern, die ich durchgearbeitet habe, finde ich immernur einen Dialogfeldaufruf aufgrund eines Button-Clicks ... aber nie durch eine zu erfüllende Bedingung.

    Kleines Grundgerüst:

    if (m_sInputFile == m_sOutputFile)
    	{
    		CDialog(IDD_DIALOG_SAME_SOURCE_AND_TARGET); //geht nicht ..
    	};
    

    Ein Tipp wäre echt toll



  • Hallo,

    einfach in onbutton()

    CDeinDialog deinDlg;
    deinDlg.DoModal();
    

    und schon sprinkt es auf.

    MFG TaccoGo



  • Okay, das hab ich nun geschafft! Danke!

    In meinem cpp-File des Dialogfeldes sind ausschließlich automatisch generierte Funktionen bzw. Funktionen für Buttonclicks. Wie sorge ich dafür, dass eine übergebene Variable direkt bei Aufruf des Dialogfeldes auch angezeigt wird? Braucht man dafür auch wieder eine neue Funktion?



  • wie übergibst du den die variablen?
    so?

    CDeinDialog deinDlg;
    deinDlg.m_v1=m_v1;// vom hauptfenster ins dlg
    deinDlg.DoModal(); 
    m_v1=deinDlg.m_v1;// vom dlg ins hauptfenster
    UpdateData(FALSE);
    

    MFG TaccoGo



  • Ja, so habe ich die Strings übergeben. Im cpp-File des Dialogfensters, habe ich dann versucht, diese Strings anzuzeigen (static Text mit einer Variable belegt):

    void CSameSourceAndTargetFilesDlg::OnActivate()
    {
    	DisplayPath1ToChange = m_sInputFile;
    	DisplayPath2ToChange = m_sOutputFile;
    }
    

    Trotzdem werden mir die Pfadangaben nicht angezeigt.



  • hast du das UpdateData(FALSE) auch im zwieten dlg?

    und nicht in OnActivate sondern in OnInitDialog().

    MFG TaccoGo



  • Hab alles so gemacht, wie Du beschrieben hast. Auf die Idee mit OnInitDialog bin ich auch gekommen. Doch da bekomme ich die folgende Fehlermeldung:

    SameSourceAndTargetFilesDlg.h(32): error C2555: 'CSameSourceAndTargetFilesDlg::OnInitDialog': overriding virtual function return type differs and is not covariant from 'CDialog::OnInitDialog'

    ...



  • also nomalerwiese, wen man die variablen wie oben beschriben übergibt, zheigt der den inhalt gleich an one initdialog oder sowas.

    wegen der fälermeldung hast du an den return rumgebastelt?

    MFG TaccoGo


Anmelden zum Antworten