Dialog aufrufen
-
void CGameTimeCounterDlg::OnNewProfile()
{NewProfile dlg;
dlg.Create(IDD_NEWPROFILE_DIALOG, this);
dlg.ShowWindow(SW_RESTORE);}
es wird alles ordnungsgemäß kompilliert aber wenn ich auf den entsprechenden Button klick passiert nichts(ausser das es kurz flimmert)
was machich falsch?
-
the_duke schrieb:
was machich falsch?
Du bedenkst nicht, wie lange deine Variable dlg "lebt".
-
Erstelle für den Dialog IDD_NEWPROFILE_DLG eine neue Klasse abgeleitet von CDIalog. Als Klassennamen nimmst Du am, besten CNewProfileDlg.
Dann kannst Du es folgendermassen aufrufen:
CNewProfileDlg dlgNew; dlgNew.DoModal();mfg
Pro
-
hab ich ja und die Klasse heisst NewProfile
-
the_duke schrieb:
hab ich ja und die Klasse heisst NewProfile
okay, dann ändere mal folgende Zeile:
NewProfile dlg;in
CNewProfile dlgNew;um und schreibe dann einfach dlgNew.DoModal();
-
Er will einen nichtModalen Dialog. DoModal erstellt eine Modalen.
MFK hat es bereits geschrieben.
Du erstellt eine Instanz einer Klasse. Jetzt die Frage an dich. Wielange ist diese gültig bzw. wielange leben lokale Variablen.
Antwort:
Solange du dich noch in der Funktion befindest wo sie aufgerufen wird.dlg.Create(IDD_NEWPROFILE_DIALOG, this); // Erstellt den Dialog
dlg.ShowWindow(SW_RESTORE); // Zeigt in an.Hier entsteht das Aufblitzen.
Jetzt kehren beide Funktionen aber zurück und der Dialog wird angezeigt.
Nunh wird die Funktion OnNewProfile() verlassen woduch auch der Destruktor von NewProfile aufgerufen wird und somit den Dialog zerstört.