Dialog öffnet sich nicht
-
Hallo ihr,
ich möchte gern durch einen Button-Klick ein anderes Dialog öffnen. Soweit ist es ja eigentlich nicht schwer - dachte ich. Habe das schon einige male hinbekommen, aber jetzt klappt es gar nicht. Ich habe schon alle Möglichkeiten ausprobiert, aber da passiert gar nix. Kann so oft ich will auf 'n Button klicken.
void CFiletransferDlg::OnReport() { NextDialog openDlg; // openDlg.Create(IDD_DIALOG1, this); //<-- einer der anderen Möglichkeiten, // openDlg.ShowWindow(SW_RESTORE); //die ich versucht habe openDlg.DoModal(); }
Dachte zuerst, dass es an NextDialog::OnInitDialog() liegt, da ich etwas(das der Text formatiert wird) hinzugefügt habe(und erst dann nimmer funktioniert hat), aber selbst wenn ich das wieder auskommentiere, funktioniert es nicht.
Einer 'ne Idee wo 'n Fehler liegen könnte?
Danke + Gruß Kitty
-
Hallo,
NextDialog ist das deine dialogfeldklasse??
wen ja solte das gehen.MFG TaccoGo
-
Der Fehler liegt wohl eher in der Dialogklasse selber.
Setz mal in jede Funktion die du da drin hast an den Anfang einen Breakpoint. Dann kannst du mal gucken was er da macht.
-
void CFiletransferDlg::OnReport() { NextDialog openDlg; // openDlg.Create(IDD_DIALOG1, this); //<-- einer der anderen Möglichkeiten, // openDlg.ShowWindow(SW_RESTORE); //die ich versucht habe openDlg.DoModal(); }
Das mit Create funktioniert auch, nur Dein NextDialog ist nur innerhalb der Methode OnReport gültig. Das Dialog wird erstellt und dann ist die Methode auch durch, also wird sie sofort wieder zerstört und Du siehst nix!
Bei DoModal() wird solange gewartet, bis Dein NextDialog einen Wert zurückgibt.
Deshalb kannst Du es sehen und damit arbeiten.Musst also eine Membervariable von Deinem NextDialog machen und dann auf Knopfdruck anzeigen lassen.
-
ja, NextDialog ist die dialogfeldklasse. deshalb wundert es mich ja, warum es nicht funktioniert
Wo soll ich die Breakpoints setzen? in der OnInitDialog()? Hab sie jetzt erstmal in jeder Funktion die NextDialog hat gesetzt. Nur ist jetzt das Problem, dass ich bei den Funktionen, die ich nicht geschrieben hab, nicht genau weiss, ob er das richtig macht oder nicht. Er springt jetzt in Funktionen/Bedingungen vondenen ich nicht verstehe was sie machen. Aber so erscheint mir nix merkwürdiges. Habe danach geschaut, ob irgendwie immer n Wert auf 0 steht bzw. eine Adresse nirgends wohin zeigt. Aber davon war keines so.
Ich dachte auch, dass er wenn er den Dialog öffnet auch in die OnInitDialog() reinspringt, aber dort kommt er nicht rein....habe gearde gesehen, dass NextDialog kein OnSysCommand() hat. Wenn die notwendig ist, kann ich sie einfach von meinem anderen Dialog kopieren, oder muss ich irgendwelche bestimmten Werte anpassen?
-
Er springt nicht in die OnInitDialog?
Dann haben wir ja schon den Fehler - wenn er da nicht vorbei kommt, wird der Dialog nicht angezeigt.
Blos wo stirbt er ab?
-
@estartu_de
sowas wollte ich jetzt eigentlich nicht von dir hörennaja ... weißt du, was er davor alles aufruft? Das würde mir recht viel helfen, damit ich weiss, welche er noch durchmacht und welche nicht.
@Airdamn
Welchen Typ müsste die mVariable haben? Ich übergebe ja keinen Text. Typ Void? Würde das dann noch was bringen, wenn er noch nicht mal in die OnInitDialog() springt?oh man, was hab ich wo nur wieder verbockt
-
Hmm, also als erstes solltest du mal alles neu bauen - hilft oft genug.
Dann achte mal auf TRACES, die dir komisch vorkommen, vielleicht meldet er dir ja, was nicht geht.
Wenn das auch nich hilft:
Wenn es nicht zu viel Code ist, poste es hier mal - sonst musst du es per Mail schicken (Adresse gibts dann).
-
ich weiss jetzt warum es nicht ging
... aber verstehen tu ich es trotzdem nicht
Es ist so, dass ich in dem Dialog, welchen ich durch den Button aufrufen will, ein Rich Edit Feld habe. Wenn ich es rausnehme, öffnet sich der Dialog.
Was muss ich denn bei einem Rich Edit Feld beachten? Wie rufe ich sonst den Dialog auf? Brauche das Feld, da ich dort einen formatierten Text ausgeben will.
Wäre dankbar, wenn ihr mir auch hier weiter helfen könntet
Danke + Gruß Kitty
-
hab auch dieses Problem durch Zufall lösen können:
Damit ein Dialog, der Rich-Edit-Steuerelemente enthält, erfolgreich aufgerufen werden kann, muss zuvor AfxInitRichEdit()in der Funktion InitInstance der Applikationsklasse aufgerufen werden.
(das für die jenigen, die evtl. au mal damit Probleme haben sollten)
Gruß Kitty
-
rufe mal
AfxInitRichEdit();
oder
AfxInitRichEdit2();
im konstruktor von deinem dialog mit dem Richedit auf;