Hallo,
Ich habe ein Problem mit einer While-Schleife. Ich habe folgendes Testprogramm geschrieben, welches die Problematik verdeutlicht:
const
WM_TEST = WM_USER+1;
...
// Schalter zum Aufrufen der Testfunktion
procedure TMainform.Button1Click(Sender: TObject);
begin
PostMessage(Handle, WM_TEST, 0,0);
MessageDlg('Ok',mtInformation, [mbOk], 0);
end;
// Testfunktion, wird über WM_TEST aufgerufen
procedure TMainform.Execute(var Message: TMessage);
begin
while(True) do Application.processmessages;
end;
Die Testfunktion besteht aus einer Endlosschleife, die fortwährend die Funktion Application.processmessages aufruft, so das Windows-Nachrichten weiter verarbeitet werden können.
Klickt man auf Button1, wird eine WM_TEST Botschaft abgesendet. Anschliessend öffnet sich eine Dialogbox mit dem Text "OK".
Soweit ist nach alles klar. Aber wenn ich diese DlgBox schliessen möchte , reagiert sie nicht mehr. Warum?
Thomas Wittek
Ich habe ein Problem mit einer While-Schleife. Ich habe folgendes Testprogramm geschrieben, welches die Problematik verdeutlicht:
const
WM_TEST = WM_USER+1;
...
// Schalter zum Aufrufen der Testfunktion
procedure TMainform.Button1Click(Sender: TObject);
begin
PostMessage(Handle, WM_TEST, 0,0);
MessageDlg('Ok',mtInformation, [mbOk], 0);
end;
// Testfunktion, wird über WM_TEST aufgerufen
procedure TMainform.Execute(var Message: TMessage);
begin
while(True) do Application.processmessages;
end;
Die Testfunktion besteht aus einer Endlosschleife, die fortwährend die Funktion Application.processmessages aufruft, so das Windows-Nachrichten weiter verarbeitet werden können.
Klickt man auf Button1, wird eine WM_TEST Botschaft abgesendet. Anschliessend öffnet sich eine Dialogbox mit dem Text "OK".
Soweit ist nach alles klar. Aber wenn ich diese DlgBox schliessen möchte , reagiert sie nicht mehr. Warum?
Thomas Wittek
Comment