Thema: Delphi Programm Stop

Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#11

AW: Programm Stop

  Alt 17. Feb 2021, 19:53
Warum nicht Application.ProcessMessages; verwenden?

Delphi-Quellcode:
procedure WinProcessMessages;
var
  ProcMsg: TMsg;
  Handled: Boolean;
begin
  while PeekMessage(ProcMsg, 0, 0, 0, PM_REMOVE) do
  begin
    { Der Teil fehlt auch alles bei dir, welchen Application.ProcessMessages sonst eigentlich machen würde.
    Handled := False;
    if Assigned(Application.OnMessage) then
      Application.OnMessage(MsgProcMsg, Handled);
    if Application.IsPreProcessMessage(ProcMsg) or Application.IsHintMsg(ProcMsg) or Handled
        or Application.IsMDIMsg(ProcMsg) or Application.IsKeyMsg(ProcMsg) or Application.IsDlgMsg(ProcMsg) then
      Continue;
    }

    if (ProcMsg.message = WM_QUIT) then
    begin
      Application.Terminate; // denn wie soll Delphi sonst das Ende mitbekommen, wenn du alle Messages hier abfängst?
      Break; // oder Exit; ... verlässt Beides diese Prozedur, da nach der Schleife eh Schluß ist
    end;
    TranslateMessage(ProcMsg);
    DispatchMessage(ProcMsg);
  end;
end;
Da fehlt gar nichts denn meine Version ist NONVCL.
Application und dein Handle gibt es bei mir nicht.
Nur zur Info!

Zitat:
Wenn du die o.g. Lösung einbaust, hängst du immer in Btn_GCode_Memo2_sendenClick fest.
Das ist quatsch denn dann dürfte WM_PAINT und alle anderen Messagen nicht mehr arbeiten.
überlege doch mal was Application.ProcessMessages; oder meine Version für NONVCL denn macht.

Aber egal es läuft ja jetzt scheinbar bei ihm und Thema erledigt.

Geändert von venice2 (17. Feb 2021 um 19:59 Uhr)
  Mit Zitat antworten Zitat