Da tut sich rein gar nichts..
Das mag zwar resourcen schonender sein aber mein Window kann ich trotzdem nicht schließen während der Song
am spielen ist.
Delphi-Quellcode:
procedure TMidiTracker.Delay(Milliseconds: Integer);
var
Tick: DWord;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := GetTickCount + DWord(Milliseconds);
while (Milliseconds > 0) and
(MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
begin
Winprocessmessages;
if PlayingSong = False then Exit;
Milliseconds := Tick - GetTickcount;
end;
finally
CloseHandle(Event);
end;
end;
Delphi-Quellcode:
// Starte den Song
while PlayingSong do
begin
//Weiterlaufen bis die 16.tel Note (Pause) abgelaufen ist
//while GetTickCount < Tick + TempoWait do
// Winprocessmessages;
Delay(Tick + TempoWait - GetTickCount);
Tick := GetTickCount;
PlayNotes;
DrawGraphics(WinHandle);
hsi.nPos := StartX + XSizeMid;
SetScrollInfo(WinHandle, SB_HORZ, hsi, True);
end;
Danke trotzdem..
EDIT:
OH sorry doch tut sich mehr als gedacht..
Von 25% CPU runter auf 1%
Aber warum kann ich mein Window nicht schließen.
grrrrr....
gruss