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 .
Also nach erzeugen der SDI sachen, macht man sein Create , bzw modal() ist viel einfacher
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
siehe http://www.cpp-tutor.de/mfc/mfc/kap3/lektion4.htm
MFC Rahmenprogramm
und im artikel ein dialog der nicht behindert nennt sich unmodal