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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trayanimation.pas

?? 海康高清電視Delphi源碼(帶IE插件) ★ 智能識別插卡數量 ★ 自動啟停視頻預覽窗口數量 ★ 窗口大小隨意可調 ★ 可全屏觀看 ★ 登錄身份驗證 ★ 登錄IP地址驗證 ★ 多達
?? PAS
字號:
unit TrayAnimation;

{ D5 and down don't support alpha-blending (transparent forms). }
{$IFDEF VER140} {$DEFINE DELPHI_6} {$ENDIF}
{$IFDEF VER150} {$DEFINE DELPHI_7} {$ENDIF}
{$IFDEF DELPHI_6} {$DEFINE DELPHI_6_UP} {$ENDIF}
{$IFDEF DELPHI_7} {$DEFINE DELPHI_6_UP} {$ENDIF}

interface

uses
  Windows, Classes, Graphics, Forms;

type
  TWindowFader = class(TThread)
  private
    BlendValue: Integer;
    procedure Fade;
  public
    FadeOut: Boolean;
    procedure Execute; override;
  end;

  TWindowImploder = class(TThread)
  private
    X, Y, W, H: Integer;
    procedure Implode;
  public
    Imploding: Boolean;
    procedure Execute; override;
  end;

  TWindowOutlineImploder = class(TThread)
  private
    X, Y, W, H: Integer;
    DesktopCanvas: TCanvas;
    procedure Implode;
  public
    Imploding: Boolean;
    constructor Create;
    destructor Destroy; override;
    procedure Execute; override;
  end;


  procedure FloatingRectangles(Minimizing, OverrideUserSettings: Boolean);

implementation

uses
  Math, ShellApi, Messages, Main;

{----------------- Stand-alone methods ----------------}

procedure FloatingRectangles(Minimizing, OverrideUserSettings: Boolean);
var
  RectFrom, RectTo: TRect;
  GotRectTo: Boolean;
  abd: TAppBarData;
  HTaskbar, HTrayWnd: HWND;
  ResetRegistry: Boolean;
  ai: TAnimationInfo;

  procedure SetAnimation(Animation: Boolean);
  begin
    FillChar(ai, SizeOf(ai), 0);
    ai.cbSize := SizeOf(ai);
    if Animation then
      ai.iMinAnimate := 1
    else
      ai.iMinAnimate := 0;
    SystemParametersInfo(SPI_SETANIMATION, 0, @ai, SPIF_SENDCHANGE);
  end;

begin
  // Check if user wants window animation
  ResetRegistry := False;
  if OverrideUserSettings then
  begin
    FillChar(ai, SizeOf(ai), 0);
    ai.cbSize := SizeOf(ai);
    SystemParametersInfo(SPI_GETANIMATION, 0, @ai, SPIF_SENDCHANGE);
    if ai.iMinAnimate = 0 then
    begin
      // Temporarily enable window animation
      ResetRegistry := True;
      SetAnimation(True);
    end;
  end;

  RectFrom := MainForm.BoundsRect;
  GotRectTo := False;

  // Get the traybar's bounding rectangle
  HTaskbar := FindWindow('Shell_TrayWnd', nil);
  if HTaskbar <> 0 then
  begin
    HTrayWnd := FindWindowEx(HTaskbar, 0, 'TrayNotifyWnd', nil);
    if HTrayWnd <> 0 then
      if GetWindowRect(HTrayWnd, RectTo) then
        GotRectTo := True;
  end;

  // If that fails, invent a rectangle in the corner where the traybar is
  if not GotRectTo then
  begin
    FillChar(abd, SizeOf(abd), 0);
    abd.cbSize := SizeOf(abd);
    if SHAppBarMessage(ABM_GETTASKBARPOS, abd) = 0 then Exit;
    with Screen, abd.rc do
      if (Top > 0) or (Left > 0) then
        RectTo := Rect(Width-32, Height-32, Width, Height)
      else if (Bottom < Height) then
        RectTo := Rect(Width-32, 0, Width, 32)
      else if (Right < Width) then
        RectTo := Rect(0, Height-32, 32, Height);
  end;

  if Minimizing then
    DrawAnimatedRects(MainForm.Handle, IDANI_CAPTION, RectFrom, RectTo)
  else
    DrawAnimatedRects(MainForm.Handle, IDANI_CAPTION, RectTo, RectFrom);

  if ResetRegistry then
    SetAnimation(False);               // Disable window animation
end;

{-------------------- TWindowFader --------------------}

procedure TWindowFader.Execute;
begin
{$IFDEF DELPHI_6_UP}
  BlendValue := MainForm.AlphaBlendValue;
{$ENDIF}
  while not Terminated do
  begin
    if FadeOut then
      Dec(BlendValue, 25)
    else
      Inc(BlendValue, 25);
    Sleep(10);
//    Application.ProcessMessages;
    Synchronize(Fade);
    if (BlendValue <= 0) or (BlendValue >= 255) then
      Terminate;
  end;
end;


procedure TWindowFader.Fade;
begin
{$IFDEF DELPHI_6_UP}
  if (BlendValue >= 0) and (BlendValue <= 255) then
    MainForm.AlphaBlendValue := BlendValue;
{$ENDIF}
end;

{------------------ TWindowImploder -------------------}

procedure TWindowImploder.Execute;
const
  minW = 120;
  minH = 25;
  deltaGrowth = 0.2;
var
  maxW, maxH: Integer;
  deltaW, deltaH: Integer;
begin
  with MainForm do
  begin
    X := Left;
    Y := Top;
    W := Width;
    H := Height;
    if Imploding then
    begin
      // Store current form size
      StartX := Left;
      StartY := Top;
      StartW := Width;
      StartH := Height;
    end;
    // Remember previous form size
    maxW := StartW;
    maxH := StartH;
  end;

  while not Terminated do
  begin
    deltaW := Round((W-minW) * deltaGrowth);
    deltaH := Round((H-minH) * deltaGrowth);
    if deltaW = 0 then
      Inc(deltaW);
    if Odd(deltaW) then
      Inc(deltaW);
    if deltaH = 0 then
      Inc(deltaH);
    if Odd(deltaH) then
      Inc(deltaH);
    if Imploding then
    begin
      W := W - deltaW;
      H := H - deltaH;
      X := X + (deltaW div 2);
      Y := Y + (deltaH div 2);
    end
    else
    begin
      W := W + deltaW;
      H := H + deltaH;
      X := X - (deltaW div 2);
      Y := Y - (deltaH div 2);
    end;
    Sleep(10);

    if (Imploding and ((W <= minW) or (H <= minH) or (deltaW = 0))) or
       (not Imploding and ((W >= maxW) or (H >= maxH) or (deltaH = 0))) then
      Terminate;

    if not Terminated then
      Synchronize(Implode);
    Application.ProcessMessages;
  end;

  if not Imploding then
  begin
    with MainForm do
      SetWindowPos(Handle, 0, StartX, StartY, StartW, StartH, SWP_NOZORDER);
    Application.ProcessMessages;
  end;
end;


procedure TWindowImploder.Implode;
begin
  SetWindowPos(MainForm.Handle, 0, X, Y, W, H, SWP_NOZORDER);
end;

{--------------- TWindowOutlineImploder ---------------}

constructor TWindowOutlineImploder.Create;
begin
  inherited Create(False);
  DesktopCanvas := TCanvas.Create;
  with DesktopCanvas do
  begin
    Handle := GetDC(0);      // HDC of desktop
//    Handle := GetWindowDC(GetDesktopWindow);
    Pen.Mode := pmNotXor;
    Pen.Style := psDot;
    Pen.Width := 2;
    Pen.Color := clGray;
//    Brush.Color := clGray;
//    Brush.Style := bsDiagCross;
    Brush.Style := bsClear;
  end;
end;


destructor TWindowOutlineImploder.Destroy;
begin
//  ReleaseDC(GetDesktopWindow, DesktopCanvas.Handle);
  ReleaseDC(0, DesktopCanvas.Handle);
  DesktopCanvas.Handle := 0;
  DesktopCanvas.Free;
  DesktopCanvas := nil;
  inherited Destroy;
end;


procedure TWindowOutlineImploder.Execute;
const
  minW = 25;
  minH = 25;
  deltaGrowth = 0.25;
var
  maxW, maxH: Integer;
  deltaW, deltaH: Integer;
begin
  with MainForm do
  begin
    if Imploding then
    begin
      X := Left;
      Y := Top;
      W := Width;
      H := Height;
      // Store current form size
      StartX := Left;
      StartY := Top;
      StartW := Width;
      StartH := Height;
      CoolTrayIcon1.HideMainForm;
    end
    else
    begin
      X := StartX + ((StartW-minW) div 2);
      Y := StartY + ((StartH-minH) div 2);
      W := minW;
      H := minH;
    end;
    // Remember previous form size
    maxW := StartW;
    maxH := StartH;
  end;

  while not Terminated do
  begin
    deltaW := Round((W-minW) * deltaGrowth);
    deltaH := Round((H-minH) * deltaGrowth);
    if deltaW = 0 then
      Inc(deltaW);
    if Odd(deltaW) then
      Inc(deltaW);
    if deltaH = 0 then
      Inc(deltaH);
    if Odd(deltaH) then
      Inc(deltaH);
    if Imploding then
    begin
      W := W - deltaW;
      H := H - deltaH;
      X := X + (deltaW div 2);
      Y := Y + (deltaH div 2);
    end
    else
    begin
      W := W + deltaW;
      H := H + deltaH;
      X := X - (deltaW div 2);
      Y := Y - (deltaH div 2);
    end;
    Synchronize(Implode);

    if (Imploding and ((W <= minW) or (H <= minH) or (deltaW = 0))) or
       (not Imploding and ((W >= maxW) or (H >= maxH) or (deltaH = 0))) then
      Terminate;
  end;
end;


procedure TWindowOutlineImploder.Implode;
{var
  R: TRect;}
begin
  if not Terminated then
    if (DesktopCanvas <> nil) and (DesktopCanvas.Handle <> 0) then
    begin
//      R := Rect(X, Y, X+W, Y+H);
//      InvalidateRect(DesktopCanvas.Handle, @R, True);
//      PostMessage(DesktopCanvas.Handle, WM_SETREDRAW, 1, 0);
//      RedrawWindow(DesktopCanvas.Handle, 0, 0, RDW_ERASE or RDW_INVALIDATE or RDW_ERASENOW);
//      UpdateWindow(DesktopCanvas.Handle);
      DesktopCanvas.Rectangle(X, Y, X+W, Y+H);
      Sleep(10);
      DesktopCanvas.Rectangle(X, Y, X+W, Y+H);
    end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产婷婷综合在线精品| 天堂影院一区二区| 欧美精品久久99久久在免费线 | 视频一区视频二区中文| 欧美国产乱子伦| 欧美精品自拍偷拍| 99r国产精品| 国产老肥熟一区二区三区| 亚洲福利视频一区| 国产精品久久久久影院亚瑟 | 中文字幕日韩一区| 精品日韩在线一区| 538prom精品视频线放| 91丨国产丨九色丨pron| 国产精品18久久久久久久久久久久| 亚洲gay无套男同| 一区二区三区自拍| 亚洲欧美在线观看| 国产精品网站在线播放| 精品久久免费看| 欧美一卡二卡三卡| 欧美日韩国产a| 在线免费一区三区| a在线播放不卡| 成人性生交大片免费看视频在线 | 国产乱人伦偷精品视频不卡 | av中文字幕一区| 国产伦精一区二区三区| 美腿丝袜一区二区三区| 青青草成人在线观看| 亚洲va国产va欧美va观看| 亚洲一级不卡视频| 夜夜操天天操亚洲| 亚洲一二三四在线观看| 一级女性全黄久久生活片免费| 国产精品日产欧美久久久久| 国产天堂亚洲国产碰碰| 国产亚洲欧洲997久久综合 | 欧洲精品在线观看| 91亚洲精品久久久蜜桃网站| 不卡视频免费播放| 97精品久久久久中文字幕| yourporn久久国产精品| 成人污污视频在线观看| 波波电影院一区二区三区| 欧美一区二区在线观看| 日韩你懂的在线播放| 精品人伦一区二区色婷婷| 精品国产一区二区三区久久影院 | 日韩免费福利电影在线观看| 91精品国产综合久久福利软件 | 国产精品久久国产精麻豆99网站| 亚洲国产成人午夜在线一区| 国产亚洲精品福利| 中文字幕视频一区| 亚洲精品成人在线| 偷拍自拍另类欧美| 久久99国产精品久久99果冻传媒| 激情久久五月天| 成人手机在线视频| 在线观看亚洲专区| 欧美一卡二卡在线| 欧美激情综合网| 一区二区三区日韩精品视频| 视频一区二区中文字幕| 精油按摩中文字幕久久| 成人网在线播放| 欧美日韩午夜在线| 久久伊人蜜桃av一区二区| 国产精品视频一区二区三区不卡| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲妇女屁股眼交7| 国内久久精品视频| 色综合一区二区| 制服.丝袜.亚洲.另类.中文| 久久久久88色偷偷免费| 一区二区三区91| 久久97超碰色| 日本精品免费观看高清观看| 亚洲已满18点击进入久久| 日韩综合在线视频| 成人性生交大片免费看在线播放| 欧美三级韩国三级日本三斤| 欧美精品一区二区久久婷婷| 亚洲视频免费在线| 美女一区二区久久| 91色porny| 久久女同精品一区二区| 亚洲最新视频在线观看| 国内外成人在线| 欧美午夜精品久久久久久孕妇| 精品美女在线观看| 一区二区三区电影在线播| 久久66热re国产| 欧美性三三影院| 国产亚洲精品7777| 日韩av一二三| 一本一道波多野结衣一区二区| 精品欧美乱码久久久久久1区2区| 亚洲精品综合在线| 国产成人无遮挡在线视频| 在线成人av网站| 亚洲女同女同女同女同女同69| 国模娜娜一区二区三区| 欧美乱妇15p| 亚洲欧美日本韩国| 粉嫩aⅴ一区二区三区四区 | 开心九九激情九九欧美日韩精美视频电影| 波多野结衣中文一区| 久久麻豆一区二区| 美女久久久精品| 欧美年轻男男videosbes| 日韩一区中文字幕| 懂色av一区二区三区蜜臀| 日韩欧美一区二区视频| 亚洲电影在线播放| 91麻豆swag| 国产精品国产三级国产专播品爱网 | 日韩西西人体444www| 亚洲综合免费观看高清完整版 | 国产成人av资源| 精品国产精品网麻豆系列| 日韩精彩视频在线观看| 欧美亚洲日本国产| 亚洲欧美日韩中文播放| eeuss鲁一区二区三区| 中文字幕国产一区二区| 国产成人综合亚洲网站| 久久伊99综合婷婷久久伊| 毛片一区二区三区| 日韩精品中文字幕一区| 青青草视频一区| 日韩欧美中文一区| 精品一区二区在线免费观看| 日韩无一区二区| 麻豆精品一二三| 亚洲精品一区二区精华| 黄色精品一二区| 久久久午夜精品| 国产成人夜色高潮福利影视| 日本一区二区动态图| 成人小视频在线| 亚洲视频 欧洲视频| 色乱码一区二区三区88| 亚洲一区二区五区| 欧美日韩国产高清一区二区| 日本在线不卡视频一二三区| 欧美一卡二卡在线观看| 激情综合网最新| 欧美激情一区二区三区蜜桃视频 | 久久久久综合网| 国产不卡视频在线播放| 国产精品国产自产拍在线| 色悠悠亚洲一区二区| 亚洲国产日产av| 日韩一区二区免费在线电影 | 欧美在线一区二区| 丝袜脚交一区二区| 精品国产乱码久久久久久夜甘婷婷| 狠狠网亚洲精品| 亚洲欧美国产毛片在线| 欧美日韩国产成人在线免费| 美女任你摸久久| 国产精品理论在线观看| 欧美一a一片一级一片| 人人狠狠综合久久亚洲| 国产欧美日产一区| 色哟哟一区二区| 麻豆精品视频在线观看| 国产欧美日产一区| 欧美性xxxxx极品少妇| 九九视频精品免费| 成人免费在线观看入口| 69久久99精品久久久久婷婷 | 成人av网址在线| 亚洲成人三级小说| 国产亚洲欧美中文| 欧美三级日韩在线| 国产成人av电影免费在线观看| 亚洲精品免费在线播放| 欧美一区二区三区免费大片 | 经典三级在线一区| 亚洲欧美日韩在线不卡| 欧美videossexotv100| 91视视频在线直接观看在线看网页在线看 | 欧美一区二区三区免费观看视频| 国产91丝袜在线播放| 亚洲第一久久影院| 亚洲国产精品高清| 91麻豆精品国产91久久久更新时间| 国产91精品露脸国语对白| 无码av免费一区二区三区试看| 国产日韩欧美麻豆| 欧美卡1卡2卡| 97精品久久久久中文字幕| 激情久久久久久久久久久久久久久久| 一级日本不卡的影视| 日本一区二区免费在线观看视频| 制服丝袜亚洲色图| 91黄色在线观看|