Was genau macht die MessageBox

toarak

Mitglied
Ich weiß diese Frage klingt seltsam.
klar sie geht auf zeigt ne nachricht an und hat ein paar Buttons

Aber was passiert genau im Hintergrund
Sie muss irgendwie alle anderen Prozesse und Funktionen blockieren aber wie macht sie das?
Wäre nett falls da jemand eine Antwort wüsste...
 
Das ganze Funktioniert über ein Modal angezeigter Dialog. Gut bei der MessageBox wird die Native MessageBox von Windows aufgerufen:
C#:
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MessageBox(HandleRef hWnd, string text, string caption, int type);

Das ganze wird über das OS geregelt. Denn nur der Fenstermanager kann dafür sorgen dass ein Fenster Modal angezeigt wird. Beim Microsoft.net Framework wird der Thread der Application in einen Modalen Messageloop geschickt. (über die internal static void BeginModalMessageLoop() ). Im Mono-Framework wird ganz simpel in der Statischen Methode eine Instanz der privaten Klasse MessageBoxForm erzeugt und über showDialog dargestellt.
Die Application.BeginModalMessageLoop() holt sich den aktuellen ThreadContext und ruft dort ebenfalls die BeginModalMessageLoop() auf. Diese Regelt in den angezeigten Forms dass Sie deaktiviert werden und bleiben. Nur das ganze ist im OS tief hinterlegt. Evt. kannst du dir ja mal den Source vom Mono-Project ansehen.

Selbst kannst du das ganze bei den Forms über showDialog auslösen.

Gruß Daniel
 
Zurück