亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aatimer.pas

?? 進(jìn)度條 進(jìn)度條 進(jìn)度條 進(jìn)度條 進(jìn)度條 進(jìn)度條
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
{*******************************************************************************

                          AAFont - 平滑特效字體控件包
                          ---------------------------
                           (C)Copyright 2001-2004
                            CnPack 開發(fā)組 周勁羽

            這一控件包是自由軟件,您可以遵照自由軟件基金會(huì)出版的GNU 較
        寬松通用公共許可證協(xié)議來修改和重新發(fā)布這一程序,或者用許可證的
        第二版,或者(根據(jù)您的選擇)用任何更新的版本。

            發(fā)布這一控件包的目的是希望它有用,但沒有任何擔(dān)保。甚至沒有
        適合特定目的而隱含的擔(dān)保。更詳細(xì)的情況請(qǐng)參閱 GNU 較寬松通用公
        共許可證。

            您應(yīng)該已經(jīng)和控件包一起收到一份 GNU 較寬松通用公共許可證的
        副本。如果還沒有,寫信給:
            Free Software Foundation, Inc., 59 Temple Place - Suite
        330, Boston, MA 02111-1307, USA.

            單元作者:CnPack 開發(fā)組 周勁羽
            下載地址:http://www.yygw.net
            電子郵件:yygw@yygw.net

*******************************************************************************}

unit AATimer;
{* |<PRE>
================================================================================
* 軟件名稱:平滑特效字體控件包
* 單元名稱:高精度定時(shí)器組件TAATimer單元
* 單元作者:CnPack 開發(fā)組 周勁羽
* 備    注:- Delphi自帶的TTimer使用操作系統(tǒng)以消息方式提供的定時(shí)器,在Win9X下
*             定時(shí)精度僅為55ms,NT下約10ms。
*           - TAATimer采用單獨(dú)的線程進(jìn)行定時(shí)控制,精度比TTimer要高,相應(yīng)地也占
*             用較多的CPU資源,其使用方式與TTimer完成兼容,并提供了更多的功能。
*           - TAATimerList定時(shí)器列表可以同時(shí)產(chǎn)生多個(gè)定時(shí)器。
*           - 所有定時(shí)器使用同一個(gè)線程定時(shí),適合大量使用的場(chǎng)合。
*           - 由于Win32是搶占式多任務(wù)操作系統(tǒng),各個(gè)線程輪流享用CPU時(shí)間片,如果
*             其它的線程占用大量CPU時(shí)間,即使設(shè)置最高精度,也不一定能保證精確
*             的定時(shí)間隔。
* 開發(fā)平臺(tái):PWin98SE + Delphi 5.0
* 兼容測(cè)試:PWin9X/2000/XP + Delphi 5/6
* 本 地 化:該單元中的字符串均符合本地化處理方式
* 更新記錄:2002.11.05 V2.0
*               重寫全部代碼,增加定時(shí)器列表,所有定時(shí)器使用同一線程定時(shí)
*           2002.04.18 V1.0
*               創(chuàng)建單元
================================================================================
|</PRE>}

interface

{$I AAFont.inc}

uses
  Windows, SysUtils, Classes, Forms;

type

//==============================================================================
// 高精度定時(shí)器對(duì)象
//==============================================================================

{ TAATimerObject }

  TAATimerObject = class(TObject)
  private
    FActualFPS: Double;
    FEnabled: Boolean;
    FExecCount: Cardinal;
    FInterval: Cardinal;
    FLastTickCount: Cardinal;
    FOnTimer: TNotifyEvent;
    FRepeatCount: Cardinal;
    FSyncEvent: Boolean;
    function GetFPS: Double;
    procedure SetEnabled(Value: Boolean);
    procedure SetFPS(Value: Double);
    procedure SetInterval(Value: Cardinal);
    procedure SetRepeatCount(Value: Cardinal);
  protected
    procedure Timer; dynamic;
  public
    constructor Create;
    destructor Destroy; override;
    property ActualFPS: Double read FActualFPS;
    property ExecCount: Cardinal read FExecCount;
  published
    property Enabled: Boolean read FEnabled write SetEnabled default True;
    property FPS: Double read GetFPS write SetFPS stored False;
    property Interval: Cardinal read FInterval write SetInterval default 1000;
    property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
    property RepeatCount: Cardinal read FRepeatCount write SetRepeatCount
      default 0;
    property SyncEvent: Boolean read FSyncEvent write FSyncEvent default True;
  end;

//==============================================================================
// 高精度定時(shí)器組件
//==============================================================================

{ TAATimer }

  TAATimer = class(TComponent)
  {* 線程定時(shí)器組件,使用方法類似 TTimer。}
  private
    FTimerObject: TAATimerObject;
    function GetActualFPS: Double;
    function GetEnabled: Boolean;
    function GetExecCount: Cardinal;
    function GetFPS: Double;
    function GetInterval: Cardinal;
    function GetOnTimer: TNotifyEvent;
    function GetRepeatCount: Cardinal;
    function GetSyncEvent: Boolean;
    procedure SetEnabled(Value: Boolean);
    procedure SetFPS(Value: Double);
    procedure SetInterval(Value: Cardinal);
    procedure SetOnTimer(Value: TNotifyEvent);
    procedure SetRepeatCount(Value: Cardinal);
    procedure SetSyncEvent(Value: Boolean);
  public
    constructor Create(AOwner: TComponent); override;
    {* 類構(gòu)造器}
    destructor Destroy; override;
    {* 類析構(gòu)器}
    property ActualFPS: Double read GetActualFPS;
    {* 實(shí)際的定時(shí)器速率,次每秒}
    property ExecCount: Cardinal read GetExecCount;
    {* 已經(jīng)執(zhí)行過的次數(shù)}
  published
    property Enabled: Boolean read GetEnabled write SetEnabled default True;
    {* 定時(shí)器是否啟用}
    property FPS: Double read GetFPS write SetFPS stored False;
    {* 定時(shí)器速度,次每秒}
    property Interval: Cardinal read GetInterval write SetInterval default 1000;
    {* 定時(shí)間隔,毫秒}
    property OnTimer: TNotifyEvent read GetOnTimer write SetOnTimer;
    {* 定時(shí)事件}
    property RepeatCount: Cardinal read GetRepeatCount write SetRepeatCount
      default 0;
    {* 定時(shí)事件次數(shù),當(dāng)定時(shí)事件發(fā)生指定次數(shù)后自動(dòng)關(guān)閉。如果為 0 表示不限制}
    property SyncEvent: Boolean read GetSyncEvent write SetSyncEvent default
      True;
    {* 是否使用同步方式在主線程中產(chǎn)生定時(shí)事件,如果為 false 將在定時(shí)線程中產(chǎn)生事件}
  end;

//==============================================================================
// 高精度定時(shí)器列表集合子項(xiàng)
//==============================================================================

{ TAATimerItem }

  TAATimerItem = class(TCollectionItem)
  {* 線程定時(shí)器列表子項(xiàng),使用方法類似 TTimer。}
  private
    FOnTimer: TNotifyEvent;
    FTimerObject: TAATimerObject;
    function GetActualFPS: Double;
    function GetEnabled: Boolean;
    function GetExecCount: Cardinal;
    function GetFPS: Double;
    function GetInterval: Cardinal;
    function GetRepeatCount: Cardinal;
    function GetSyncEvent: Boolean;
    procedure SetEnabled(Value: Boolean);
    procedure SetFPS(Value: Double);
    procedure SetInterval(Value: Cardinal);
    procedure SetRepeatCount(Value: Cardinal);
    procedure SetSyncEvent(Value: Boolean);
  protected
    procedure Timer(Sender: TObject);
  public
    constructor Create(Collection: TCollection); override;
    {* 類構(gòu)造器}
    destructor Destroy; override;
    {* 類析構(gòu)器}
    procedure Assign(Source: TPersistent); override;
    {* 賦值方法}
    property ActualFPS: Double read GetActualFPS;
    {* 實(shí)際的定時(shí)器速率,次每秒}
    property ExecCount: Cardinal read GetExecCount;
    {* 已經(jīng)執(zhí)行過的次數(shù)}
  published
    property Enabled: Boolean read GetEnabled write SetEnabled default True;
    {* 定時(shí)器是否啟用}
    property FPS: Double read GetFPS write SetFPS stored False;
    {* 定時(shí)器速度,次每秒}
    property Interval: Cardinal read GetInterval write SetInterval default 1000;
    {* 定時(shí)間隔,毫秒}
    property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
    {* 定時(shí)事件}
    property RepeatCount: Cardinal read GetRepeatCount write SetRepeatCount
      default 0;
    {* 定時(shí)事件次數(shù),當(dāng)定時(shí)事件發(fā)生指定次數(shù)后自動(dòng)關(guān)閉。如果為 0 表示不限制}
    property SyncEvent: Boolean read GetSyncEvent write SetSyncEvent default
      True;
    {* 是否使用同步方式在主線程中產(chǎn)生定時(shí)事件,如果為 false 將在定時(shí)線程中產(chǎn)生事件}
  end;

//==============================================================================
// 高精度定時(shí)器列表集合類
//==============================================================================

{ TAATimerCollection }

  TAATimerList = class;

  TAATimerCollection = class(TOwnedCollection)
  {* 線程定時(shí)器列表集合}
  private
    FTimerList: TAATimerList;
    function GetItems(Index: Integer): TAATimerItem;
    procedure SetItems(Index: Integer; Value: TAATimerItem);
  protected
    property TimerList: TAATimerList read FTimerList;
  public
    constructor Create(AOwner: TPersistent);
    {* 類構(gòu)造器}
    property Items[Index: Integer]: TAATimerItem read GetItems write SetItems; default;
    {* 定時(shí)器數(shù)組屬性}
  end;

//==============================================================================
// 高精度定時(shí)器列表組件
//==============================================================================

{ TAATimerList }

  TAATimerEvent = procedure(Sender: TObject; Index: Integer; var Handled:
    Boolean) of object;
  {* 線程定時(shí)器列表事件。Index 為產(chǎn)生事件的定時(shí)器子項(xiàng)序號(hào),Handle 返回是否已處理,
     如果在事件中將 Handle 置為 true,將不產(chǎn)生該定時(shí)器子項(xiàng)事件}
    
  TAATimerList = class(TComponent)
  {* 線程定時(shí)器列表組件,可以定義多個(gè)定時(shí)器。}
  private
    FItems: TAATimerCollection;
    FOnTimer: TAATimerEvent;
    procedure SetItems(Value: TAATimerCollection);
  protected
    function Timer(Index: Integer): Boolean;
  public
    constructor Create(AOwner: TComponent); override;
    {* 類構(gòu)造器}
    destructor Destroy; override;
    {* 類析構(gòu)器}
  published
    property Items: TAATimerCollection read FItems write SetItems;
    {* 定時(shí)器列表}
    property OnTimer: TAATimerEvent read FOnTimer write FOnTimer;
    {* 定時(shí)器事件}
  end;

implementation

type

//==============================================================================
// 高精度定時(shí)器線程(私有類)
//==============================================================================

{ TAATimerThread }

  TAATimerMgr = class;

  TAATimerThread = class(TThread)
  private
    FTimerMgr: TAATimerMgr;
  protected
    FInterval: Cardinal;
    FStop: THandle;
    procedure Execute; override;
    property TimerMgr: TAATimerMgr read FTimerMgr;
  public
    constructor Create(CreateSuspended: Boolean; ATimerMgr: TAATimerMgr);
  end;

//==============================================================================
// 高精度定時(shí)器管理器(私有類)
//==============================================================================

{ TAATimerMgr }

  TAATimerMgr = class(TObject)
  private
    FTimerList: TThreadList;                
    FTimerThread: TAATimerThread;
  protected
    procedure ClearTimer;
    procedure DoTimer(Sycn: Boolean);
    procedure SyncTimer; virtual;
    procedure Timer; virtual;
  public
    constructor Create;
    destructor Destroy; override;
    function AddTimer: TAATimerObject;
    procedure DeleteTimer(TimerObject: TAATimerObject); overload;
  end;

//==============================================================================
// 高精度定時(shí)器線程(私有類)
//==============================================================================

{ TAATimerThread }

constructor TAATimerThread.Create(CreateSuspended: Boolean; ATimerMgr:
  TAATimerMgr);
begin
  inherited Create(CreateSuspended);
  Assert(Assigned(ATimerMgr));
  FTimerMgr := ATimerMgr;
  FStop := CreateEvent(nil, False, False, nil); // 創(chuàng)建退出用事件
end;

procedure TAATimerThread.Execute;
begin
  repeat                                // 等待退出事件置位或 FInterval 毫秒后超時(shí)退出
    if WaitForSingleObject(FStop, FInterval) = WAIT_TIMEOUT then
    begin
      TimerMgr.Timer;                   // 非同步方式產(chǎn)生定時(shí)事件
      Synchronize(TimerMgr.SyncTimer);  // 同步方式產(chǎn)生定時(shí)事件
    end;
  until Terminated;
  CloseHandle(FStop);                   // 釋放事件句柄
end;

//==============================================================================
// 高精度定時(shí)器管理器(私有類)
//==============================================================================

{ TAATimerMgr }

constructor TAATimerMgr.Create;
begin
  inherited Create;
  FTimerList := TThreadList.Create;
  FTimerThread := TAATimerThread.Create(True, Self);
  FTimerThread.FreeOnTerminate := False;
  FTimerThread.Priority := tpNormal;
  FTimerThread.FInterval := 1;
  FTimerThread.Resume;
end;

destructor TAATimerMgr.Destroy;
begin
  FTimerThread.Terminate;
  SetEvent(FTimerThread.FStop);
  if FTimerThread.Suspended then FTimerThread.Resume;
  FTimerThread.WaitFor;
  ClearTimer;
  FreeAndNil(FTimerThread);
  FreeAndNil(FTimerList);
  inherited Destroy;
end;

function TAATimerMgr.AddTimer: TAATimerObject;
begin
  Result := TAATimerObject.Create;
  with FTimerList.LockList do
  try
    Add(Result);
  finally
    FTimerList.UnlockList;
  end;
end;

procedure TAATimerMgr.ClearTimer;
var
  i: Integer;
begin
  with FTimerList.LockList do
  try
    for i := Count - 1 downto 0 do
    begin
      TAATimerObject(Items[i]).Free;
      Delete(i);
    end;
  finally
    FTimerList.UnlockList;
  end;
end;

procedure TAATimerMgr.DeleteTimer(TimerObject: TAATimerObject);
var
  i: Integer;
begin
  with FTimerList.LockList do
  try
    for i := 0 to Count - 1 do
      if Items[i] = TimerObject then

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕视频一区| 日韩美女视频在线| 国产精品资源网| 亚洲女人的天堂| 日韩欧美精品在线视频| 成人免费视频网站在线观看| 日韩中文欧美在线| 亚洲精品老司机| 日本一区二区三级电影在线观看| 欧美色图12p| 色狠狠一区二区| 99re成人在线| 9i看片成人免费高清| 国产乱人伦偷精品视频不卡| 亚洲444eee在线观看| 国产精品人成在线观看免费| 国产日韩欧美制服另类| 精品成人一区二区| 久久久亚洲国产美女国产盗摄 | 久久青草国产手机看片福利盒子| 欧美日韩国产美| 在线播放91灌醉迷j高跟美女 | 欧美www视频| 日韩亚洲国产中文字幕欧美| 欧美精品日韩精品| 欧美一区二区视频网站| 日韩欧美一级二级三级久久久| 欧美一个色资源| 日韩精品一区在线| 国产欧美日韩在线看| 久久精品欧美一区二区三区麻豆| 国产色产综合色产在线视频| 国产欧美精品一区| 亚洲三级在线免费| 亚洲不卡av一区二区三区| 日韩精品亚洲一区二区三区免费| 亚洲大片精品永久免费| 久久99蜜桃精品| 不卡在线视频中文字幕| 在线观看亚洲精品| 精品福利二区三区| 亚洲精品成人少妇| 日韩国产精品久久久久久亚洲| 麻豆91在线播放| 99在线热播精品免费| 在线观看91精品国产麻豆| 久久久久亚洲综合| 亚洲欧美韩国综合色| 激情偷乱视频一区二区三区| 97se亚洲国产综合在线| 欧美一级免费大片| 国产精品电影一区二区| 日本成人在线看| 色婷婷精品久久二区二区蜜臀av| 91精品国产欧美一区二区| 亚洲女子a中天字幕| 麻豆精品一区二区三区| 欧美日韩精品二区第二页| 国产三级三级三级精品8ⅰ区| 亚洲一区二区欧美日韩| 国产一区二区视频在线| 欧美一级在线免费| 五月婷婷激情综合网| 95精品视频在线| 国产精品高潮呻吟久久| 国产91综合网| 精品国产在天天线2019| 午夜精彩视频在线观看不卡| av爱爱亚洲一区| 亚洲国产岛国毛片在线| 国产另类ts人妖一区二区| 欧美大片拔萝卜| 久久福利视频一区二区| 欧美一级理论片| 美女www一区二区| 欧美精品一区二区三区很污很色的 | 久久青草国产手机看片福利盒子 | 国产精品综合视频| 欧美精品一区二区久久婷婷| 免费xxxx性欧美18vr| 538在线一区二区精品国产| 亚洲mv在线观看| 91精品国产欧美一区二区| 日韩vs国产vs欧美| 日韩美女视频一区二区在线观看| 麻豆久久一区二区| 久久久不卡影院| 欧美中文字幕一区二区三区| 亚洲国产人成综合网站| 在线播放欧美女士性生活| 寂寞少妇一区二区三区| 亚洲色图丝袜美腿| 91精品国产色综合久久ai换脸| 国产在线不卡一区| 亚洲男同1069视频| 中文字幕中文字幕一区二区| 国产不卡视频一区二区三区| 欧美丝袜丝nylons| 亚洲午夜影视影院在线观看| 高清国产一区二区三区| 久久精品免费在线观看| 国产成人a级片| 青娱乐精品视频在线| 久久久亚洲精品石原莉奈| 91福利国产成人精品照片| 美国三级日本三级久久99| 亚洲同性gay激情无套| 日韩欧美一区二区免费| 色噜噜偷拍精品综合在线| 麻豆国产一区二区| 亚洲观看高清完整版在线观看| 久久久久久久综合色一本| 欧美亚一区二区| 亚洲va韩国va欧美va精品| 91精品综合久久久久久| 99国产精品久| 从欧美一区二区三区| 黄网站免费久久| 国产成人自拍在线| 日韩电影免费在线看| 亚洲一区二区美女| 一区二区成人在线视频| 亚洲视频免费看| 亚洲免费在线视频一区 二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 成人午夜av电影| 成人av网在线| 91麻豆成人久久精品二区三区| 国产成人精品免费网站| 福利一区二区在线| 成人动漫视频在线| 成人av集中营| 色94色欧美sute亚洲线路一ni| 99精品热视频| 欧美色国产精品| 欧美v亚洲v综合ⅴ国产v| 欧美本精品男人aⅴ天堂| 久久影音资源网| 日韩美女视频19| 亚洲成av人片一区二区三区| 亚洲电影你懂得| 麻豆一区二区在线| 国产成人亚洲综合a∨婷婷图片| 99久久久国产精品免费蜜臀| 91久久香蕉国产日韩欧美9色| 欧美日韩激情一区二区| 久久久蜜臀国产一区二区| 亚洲男帅同性gay1069| 免费国产亚洲视频| 福利一区福利二区| 欧美一区欧美二区| 国产精品久久久久影视| 午夜一区二区三区视频| 国产不卡在线视频| 91.成人天堂一区| 国产精品久久久久四虎| 青青青伊人色综合久久| 色综合久久久久久久| 久久久久成人黄色影片| 三级在线观看一区二区| 成人激情开心网| 久久青草欧美一区二区三区| 亚洲无线码一区二区三区| 成人av先锋影音| 欧美精品一区二区三区高清aⅴ| 亚洲尤物视频在线| 99精品久久只有精品| 欧美国产日韩亚洲一区| 精品制服美女丁香| 欧美岛国在线观看| 日韩国产在线一| 欧美日韩一区二区三区视频| 亚洲三级免费电影| 91啪亚洲精品| 日韩理论片在线| 97se亚洲国产综合自在线不卡 | 欧美精品一区视频| 国产曰批免费观看久久久| 精品对白一区国产伦| 国产一二精品视频| 国产精品卡一卡二| 91老师片黄在线观看| 亚洲黄色av一区| 色狠狠综合天天综合综合| 亚洲摸摸操操av| 欧美日韩国产免费| 精品一区二区国语对白| 久久蜜桃av一区二区天堂| 国产高清在线观看免费不卡| 中文在线资源观看网站视频免费不卡 | 欧美xxxxxxxxx| 99在线视频精品| 日韩精品五月天| 久久精品欧美一区二区三区麻豆| heyzo一本久久综合| 亚洲成人tv网| 国产日韩亚洲欧美综合| 欧美体内she精高潮| 黑人巨大精品欧美一区| 亚洲精品中文在线|