Also:
Deine Schleife:
Delphi-Quellcode:
while (GetMessage(msg, 0, 0, 0)) do begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
Meine Schleife:
Delphi-Quellcode:
while not done do
begin
PeekMessage(msg, FHandle, 0, 0, PM_REMOVE);
if msg.message = WM_QUIT then
done := true
else
begin
TranslateMessage(msg);
DispatchMessage(msg);
Sleep(1);
end;
end;
GetMessage liefert false, wenn WM_QUIT eintrifft, deshalb bricht deine Schleife in diesem Fall ab.
PeekMessage liefert true, wenn eine Nachricht da ist und ansonsten false. Deshalb muss ich selbst auf WM_QUIT prüfen und die Schleife dann abbrechen, was ich ja auch tue.