Dialog in Hauptfenster anzeigen

Hallo,
ich habe eine Frage zu einem Thema dass ich hier im Archiv gefunden habe: /t/mfc-dialog-nicht-modal/860574

Und zwar möchte ich einen Dialog in meinem Hauptfenster anzeigen lassen. Ich habe ein SDI Projekt und habe dann ganz normal einen Dialog eingefügt mit der IDD_DIALOG und als Klasse CAuswahlDlg. Durch den Artikel aus dem Archiv habe ich ja jetzt schon erfahren dass ich erstmal Create(); und dann noch ShowWindow(); aufrufen muss. Das Problem ist nun, mir ist nicht so ganz klar wo ich das aufrufen muss. Ich dachte in der OnDraw(); Methode meines ProgrammView.cpp, aber das klappt nicht. Kann mir jemand helfen? Ich weis das ist bestimmt sehr leicht zu lösen, aber ich bin Anfänger und mach schon einen online Kurs nach dem andern und das sollte doch relativ einfach rauszufinden sein, aber ich finde es einfach nicht.
Vielen Dank im Voraus
Beste Grüße
Laura

niemals im darw irgentwas anderes machen mit fenstern etc , ahh das genau der ort wo wirklich nur ins eigene fenster gezeichnet wird , weder in ein anderes fenster noch sonst wo, auch ein debugg punkt dort hat fatale folgen.

Du hast eine SDI und die macht ja ein standart Fenster Mainframe mit deinem programm auf, eine menu leiste, pluss die fenster sachen (schliessen minimieren) , wenn du nun ein dialog hast, dann kann dieser erst nach der öffnung der anderen erfolgen.
Im folgenden werden erst alle Eigenen SDI teile erzeugt, damit die Anwendung erstmal ein Dokument etc hat, dann kannst du dich um dein eigenen kram kümmern. Jedes ding ist für sich, auch deine anwendungsfenster haben (ausser dem mainframe) nicht wirklich was gemeinsam :smile:.
Also nach erzeugen der SDI sachen, macht man sein Create , bzw modal() ist viel einfacher :smile:

http://www.cpp-tutor.de/mfc/mfc/kap8/lektion1.htm

// Dokumentvorlagen der Anwendung registrieren. Dokumentvorlagen
 // dienen als Verbindung zwischen Dokumenten, Rahmenfenstern und Ansichten.
 CSingleDocTemplate\* pDocTemplate;
 pDocTemplate = new CSingleDocTemplate(
 IDR\_MAINFRAME,
 RUNTIME\_CLASS(Ccccfv02Doc),
 RUNTIME\_CLASS(CMainFrame), // Haupt-SDI-Rahmenfenster
 RUNTIME\_CLASS(Ccccfv02View));
 if (!pDocTemplate)
 return FALSE;
 AddDocTemplate(pDocTemplate);
 // DDE-Execute-Open aktivieren
 EnableShellOpen();
 RegisterShellFileTypes(TRUE);
 // Befehlszeile parsen, um zu prüfen auf Standardumgebungsbefehle DDE, Datei offen
 CCommandLineInfo cmdInfo;
 ParseCommandLine(cmdInfo);
 // Verteilung der in der Befehlszeile angegebenen Befehle. Es wird FALSE zurückgegeben, wenn
 // die Anwendung mit /RegServer, /Register, /Unregserver oder /Unregister gestartet wurde.
 if (!ProcessShellCommand(cmdInfo))
 return FALSE;

 // Nur falls MRU-Liste schon vorhanden ist
 if ((\*m\_pRecentFileList)[0].GetLength() != 0)
 {
 bmrudocreload=true;
 // Oeffne zuletzt benutzte Datei
 if (!OnOpenRecentFile(ID\_FILE\_MRU\_FILE1))
 // bmrudocreload=false;
 MessageBox(0,"Kann zuletzt benutzte Datei nicht öffnen!",
 "FEHLER",MB\_OK);
 }

 // Das einzige Fenster ist initialisiert und kann jetzt angezeigt und aktualisiert werden.
 m\_pMainWnd-\>ShowWindow(SW\_SHOW);
 m\_pMainWnd-\>UpdateWindow();

und danach kanns losgehen :smile:

siehe http://www.cpp-tutor.de/mfc/mfc/kap3/lektion4.htm
MFC Rahmenprogramm

und im artikel ein dialog der nicht behindert nennt sich unmodal :smile:

klar kann man auch vor dem öffnen des MainFrame ein Dialog bauen, es ist aber besser wenn der dialog am mainframe hängt, da sonst bei Framefenster abstutzt der dialog noch existent ist, das kann zu doofen ghosting prozessen führen.