Zwichen Dialogen hin und her
-
Rapha schrieb:
Hi
Verändert den Zeiger von (was auch immer).
Hab ich net so ganz verstanden

Was ist den this in Deinem Beispiel und warum setzt Du das Handle auf den Dialog ?
-
Achso :p
this hab ich geschrieben, damit sich die Liste mit allen Klassenelementen öffnet

m_pMainWnd ist ein Element von CWinApp und zeigt auf das Hauptfenster.Grüße Rapha
-
Hm, und das sollten wie hellsehen ? :-p
Übrigens ist es keine gute Idee einen Hilfsdialog als Hauptfenster einzutragen ?!
Ich habe mehrere Dialoge erstellt, und öffne nun aus dem Hauptfenster einen neuen Dialog (mit neu.DoModal;). wie kann ich es jetzt erreichen, das ich zwischen beiden hin und her schalten kann? Nur das neue Fenster ist und bleibt Aktiv.
Auf die Frage wäre Übrigens die Antwort falsch gewesen, da Du ein neues Fenster erstellst und es als Hauptfenster einträgst. Aber nu is die Goldwage voll und es passt nix mehr drauf ;o)
-
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