Dialog erstellen und zerstören
-
Wie erstellt und zerstört man einen nicht modalen Dialog.
-
Vieleicht sollte ich etwas genauer werden. Also mein Dialog befindet sich in einer DLL.
Nun möchte ich gerne über eine Exportfunktion meinen Dialog aufrufen.
CMindDialog m_dlgMind;
extern "C" __declspec(dllexport) void OpenMindDialog()
{
theApp.m_dlgMind.Create(IDD_DIALOG_MIND);
theApp.m_dlgMind.ShowWindow(SW_SHOW);
}void CMindDialog::OnCancel
{
DestroyWindow();
}Wenn ich nun schön in der Reihenfolge den Dialog aufmache und ihn danach wieder schliesse funktioniert es wunderbar. Wenn ich allerdings OpenMindDialog nochmals aufrufe bevor ich das vorherige geschlossen habe erhalte ich einen Fehler.
Ich weiß, dass das Fenster dadurch 2 mal erzeugt wird. Allerdings weiß ich nun nicht wie ich das umgehe.
Allerdings wenn
-
Wenn Du das wieder mit dem CMindDialog m_dlgMind; Objekt machst ist der Fehler klar. Dieses Objektist ja schon geöffne.
Du benötigst also auch ein zweites Objekt:
CMindDialog m_dlgMind2;
Eine Klasse und die Objekt-Instanz einer Klasse ist ein Unterschied. Du hast eine Klasse, aber evtl. viele Objekte davon.
-
Hallo. Nein ich wollte keinen 2ten Dialog öffnen. Ich wollte nur verhindern dass es keinen Fehler gibt wenn ausversehen OpenMindDialog() erneut aufgerufen wird.
extern "C" __declspec(dllexport) void OpenMindDialog() { if( theApp.m_dlgMind.m_hWnd == NULL) theApp.m_dlgMind.Create(IDD_DIALOG_MIND); theApp.m_dlgMind.ShowWindow(SW_SHOW); }
So funktioniert es.