Delphi-Quellcode:
procedure WinProcessMessages;
var
ProcMsg: TMsg;
begin
while PeekMessage(ProcMsg, 0, 0, 0, PM_REMOVE) do
begin
if (ProcMsg.message = WM_QUIT) then
Exit;
TranslateMessage(ProcMsg);
DispatchMessage(ProcMsg);
end;
end;
// Starte den Song
while PlayingSong do
begin
//Weiterlaufen bis die 16.tel Note (Pause) abgelaufen ist
while GetTickCount < Tick + TempoWait do
Winprocessmessages;
...
Mit exit beendest du ja auch nur die Ausführung der Funktion. Die while PlayingSong do-Schleife wertet das Ergebnis der Nachrichtenbehandlung nicht aus. D.h. die rennt ungestört weiter...
Rückgabewert? Oder gleich ein PlayingSong := false? kA welche Sichtbarkeit deine Variablen haben.
Nebenbei: Was passiert überhaupt wenn deine Anwendung Musik abspielt und etwas anderes (viel anderes bei Mehrkern) lastet dein System übermäßig aus?
Achso, ich mach dann erstmal Feierabend
8 Spuren? Du überrascht schon wieder...
Und noch was weil ich es gerade sehe... du solltest solche Sachen wie DrawGraphics(WinHandle); nicht während des Herunterfahren der Anwendung ausführen. Und Halt wird dir vermutlich Speicherlecks bescheren...