Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#54

AW: Timing problem

  Alt 8. Apr 2011, 20:17
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

Geändert von EWeiss ( 8. Apr 2011 um 20:20 Uhr)
  Mit Zitat antworten Zitat