Kann man einen modalen Dialog von aussen beenden??
-
Hi,
mal eine Frage, ob/wie das gehen würde...Also ich hab einen MODALEN Dialog gestartet. Diesen möchte ich jetzt von einem anderen Thread aus töten...ich weiß nicht wie das geht...
Was ich gemacht hab is:
im anderen Thread:
dlg = besorge Dialog-instance...
dlg.DestroyWindow();==>das Ergebnis ist, das der Dialog zwar verschwindet, jedoch alles andere immer noch eingefroren ist - ganz so, als liefe der Dialog quasi im Hintergrund noch modal weiter....
Kann mir da jemand helfen...??
Besten Dank.
-
SendMessage mit WM_CLOSE
-
Hi Danke..das scheint zu funktionieren.....
aber weißt du, warum EndDialog() nicht so richtig funktioniert?? Also ich hab EndDialog() innerhalb von dem modalen Dialog gerufen und da gab es keine Probleme...aber wenn ich EndDialog von nem anderen Thread aus gerufen hab, gabs assertion-fehler....
Das liegt wahrscheinlich daran, dass MFC nicht threadsafe ist...ich hab diesbzgl schon mal Probleme gehabt (veränderung des Docs und update der Views aus anderem Thread heraus) und mir damit geholfen, dass ich erstmal ne userdefinierte Windowsmessage ans MainFrame verschicke und dann dort den eigentlichen Aufruf tätige (damals war das halt doc->UpdateAllViews)...aber dieses Prinzip hat dieses Mal nicht geholfen...naja, egal...
-
maxpower24 schrieb:
aber weißt du, warum EndDialog() nicht so richtig funktioniert?? Also ich hab EndDialog() innerhalb von dem modalen Dialog gerufen und da gab es keine Probleme...aber wenn ich EndDialog von nem anderen Thread aus gerufen hab, gabs assertion-fehler....
Das ist normal. Solche (direkte) Methode dürfen nur aus dem Thread, welcher das Fenster erstellt hat aufgerufen werden. Dies ist By-Design.
maxpower24 schrieb:
Das liegt wahrscheinlich daran, dass MFC nicht threadsafe ist...
Hat mit der MFC nichts zu tun, sondern dies ist eben By-Design von Windows so...