Zwichen Dialogen hin und her



  • Hi

    Knuddlbaer schrieb:

    Auf die Frage wäre Übrigens die Antwort falsch gewesen, da Du ein neues Fenster erstellst und es als Hauptfenster einträgst.

    wie gesagt:

    Ich habe deine Frage (von haedfinger) auf Grund Zeitdruck nur kurz überflogen.

    😉

    Grüße Rapha



  • Jepp kenn ich. Dabei kommen die tollsten Antworten raus O🤡

    Hätte ja aber auch sein können das es einen besonderen Grund hat. Mit MFC mach ich nich so viel.



  • Nicht schlecht @ Knuddlbaer
    Es sollte tastsählich auch nur ein Hilfsdialog sein.
    Ich find es toll, daß du die Frage so aufmerksam gelesen hast, obwohl sie doch so simpel war. Danke.

    Im übrigen: Arbeite gerade mit dem Laptop, und hab da aus Platzgründen die MSDN nicht drauf. mach ich jetzt aber gleich 😉

    Bye UND DANKE NOCHMAL



  • Nicht schlecht @ Knuddlbaer
    Es sollte tastsählich auch nur ein Hilfsdialog sein.
    Ich find es toll, daß du die Frage so aufmerksam gelesen hast, obwohl sie doch so simpel war. Danke.

    Im übrigen: Arbeite gerade mit dem Laptop, und hab da aus Platzgründen die MSDN nicht drauf. mach ich jetzt aber gleich 😉

    Bye UND DANKE NOCHMAL



  • Hm, war eigentlich eher aus eigener Interesse hinterfragt da ich mich MFC etc. nich viel mache. Es hat mich einfach Interessiert wieso es genau so gemacht wird da ich es mir nicht sinnvoll erklären konnte. Hätte ja sein können das ich was verschlafen habe und was neuen zum lernen gibt 🙂

    Klappts mit den Fensterln nu ?



  • Ja! Dashab ich endlich geschafft.
    Die geschichte mit den Zeigern verwirrt mich nur immer ein wenig.

    Jetzt ist nurnoch mein Problem, wie ich es schaffe dieses Fenster nur einmal zu öffnen. Ich kann es ja jetzt beliebig oft öffnen.

    Mal sehen, vieleicht bekomm ich es ja hin, aber falls mir hier jemand dazu etwas schreiben will, bin ich auch nicht böse 🙂
    BYE



  • Hi,

    haedfinger schrieb:

    Jetzt ist nurnoch mein Problem, wie ich es schaffe dieses Fenster nur einmal zu öffnen. Ich kann es ja jetzt beliebig oft öffnen.

    Nach deiner Problembeschreibung gehe ich davon aus, dass du ungefähr!! so eine Funktion bei einem Klick auf den Button aufrufst:

    void CDeinDialogDlg::OnButtonName() 
    {
    	CHilfeDialog* pDlg = new CHilfeDialog();
    	pDlg->Create(IDD_HILFE_DIALOG, this);
    }
    

    Du hast mehrere Möglichkeiten:
    - eine bool Variable anlegen, die bestimmt, ob der Hilfdialog schon erstellt wurde [nicht so gut]

    - eine Membervariable (in meinem Beispiel m_HilfeDlg) vom Typ CHilfeDlg (Name in deine Namen ändern) in deiner Dialogklasse anlegen und die Funktion, die aufgerufen wird, wenn du auf den Button klickst, ändern:

    void CDeinDialogDlg::OnButtonName() 
    {
    	// Existiert das Hilfefenster schon? Wenn nicht: erstellen
    	if(!m_HilfeDlg.GetSafeHwnd()) pDlg.Create(IDD_HILFE_DIALOG, this);
    }
    

    [nach meiner Meinung beste Möglichkeit, da du leicht zugriff auf das Hilfsfenster hast]

    - FindWindow usw. aufrufen um zu entscheiden, ob das Fenster schon erstellt wurde

    Grüße Rapha



  • Bei mir sieht das jetzt so aus.
    Aber es klappt nicht. Es werden nochimmer mehrere geöffnet.
    Ich benutze den Pfeilzeiger, weil der andere mir einen fehler bringt.

    void CStation::OnTest()
    {
    CTest* testDlg = new CTest;
    if(!m_testDlg.GetSafeHwnd()) testDlg->Create(IDD_TEST_DIALOG, this);
    testDlg->ShowWindow(SW_NORMAL);
    }

    Die Variable ist direkt unter dem "public:" CTest m_testDlg;



  • Jjojo, jetzt haste beide Lösungen vermischt 😉
    Du hast die Variable m_testDlg vom typ CTest in CStation angelegt? Ok, ändere deine Funktion OnTest folgendermaßen um:

    void CStation::OnTest() 
    { 
    if(!m_testDlg.GetSafeHwnd())
    {
       m_testDlg.Create(IDD_TEST_DIALOG, this); 
       m_testDlg.ShowWindow(SW_NORMAL); // <- das wirst du nicht brauchen, aber egal
    }
    }
    

    Dann klappts

    Grüße Rapha



  • Danke.
    So hat es geklappt.
    Mußte aber den zweiten Teil auch einfügen sonst geht es nicht. -->

    m_testDlg.ShowWindow(SW_NORMAL);

    Aber Nochmals Danke für die Unterstützung.
    Ich werd das schon noch richtig lernen. 🙂



  • Hi

    haedfinger schrieb:

    Mußte aber den zweiten Teil auch einfügen sonst geht es nicht.

    Du brauchst den Code nur, wenn du unter "Dialog Eigenschaften" "Weitere Formate" "Sichtbar" deaktiviert hast 😉

    Freut mich dass dus hinbekommen hast 👍

    Grüße Rapha


Anmelden zum Antworten