Thema: Delphi Delay

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delay

  Alt 8. Aug 2012, 19:30
z.B. bei den TastenCodes, oder bei Messages zum Auslesen/Senden von Text, wie WM_GETTEXT?
siehe IsWindowUnicode

[add]
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
var
  Unicode: Boolean;
  Event: THandle;
  Tick: DWORD;
  Msg: TMsg;
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
      if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin
        Unicode := (Msg.hwnd = 0) or IsWindowUnicode(Msg.hwnd);
        if (not Unicode and PeekMessageA(Msg, 0, 0, 0, PM_REMOVE)) or (Unicode and PeekMessageW(Msg, 0, 0, 0, PM_REMOVE)) then begin
          if Msg.message = WM_QUIT then begin
            PostQuitMessage(Msg.wParam);
            Break;
          end;
          TranslateMessage(Msg);
          if Unicode then DispatchMessageW(Msg) else DispatchMessageA(Msg);
        end;
        Milliseconds := Integer(Tick - GetTickcount);
      end;
    end;
  finally
    CloseHandle(Event);
  end;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Aug 2012 um 20:07 Uhr)
  Mit Zitat antworten Zitat