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

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

?? trayanimation.pas

?? delphi 托盤源代碼
?? 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.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图一区二区| av激情综合网| av电影天堂一区二区在线观看| 欧洲精品在线观看| 久久精品一区二区三区不卡牛牛| 午夜电影网一区| 99精品桃花视频在线观看| 2020国产成人综合网| 五月综合激情婷婷六月色窝| 91麻豆蜜桃一区二区三区| 久久亚洲一区二区三区四区| 美女视频黄免费的久久| 欧美日韩日日摸| 亚洲自拍偷拍九九九| 91麻豆国产精品久久| 国产精品日韩成人| 国产白丝网站精品污在线入口| 精品处破学生在线二十三| 日韩电影网1区2区| 日韩一区二区三区免费看| 日本最新不卡在线| 欧美妇女性影城| 婷婷综合在线观看| 欧美日韩另类一区| 亚洲国产成人av好男人在线观看| 日本精品免费观看高清观看| 亚洲欧美国产三级| 91色|porny| 亚洲综合一区在线| 在线看国产一区二区| 一区二区三区精品在线观看| 欧美最猛黑人xxxxx猛交| 亚洲乱码中文字幕| 欧美调教femdomvk| 婷婷久久综合九色综合伊人色| 欧美视频一区在线| 亚洲一级二级三级| 宅男噜噜噜66一区二区66| 丝袜亚洲另类丝袜在线| 欧美一区二区在线观看| 青青草97国产精品免费观看无弹窗版| 91精品麻豆日日躁夜夜躁| 美女精品自拍一二三四| 久久久久久久综合| av日韩在线网站| 亚洲国产成人精品视频| 日韩一级精品视频在线观看| 狠狠色丁香久久婷婷综| 欧美激情中文字幕一区二区| 成人动漫一区二区在线| 亚洲成人777| 久久综合九色综合97婷婷| 丰满放荡岳乱妇91ww| 一区二区三区中文在线观看| 欧美精品vⅰdeose4hd| 看电影不卡的网站| 国产精品乱码人人做人人爱 | 欧美日韩高清影院| 久久国产精品色婷婷| 国产精品久久久久久久久动漫| 在线免费精品视频| 国产美女在线精品| 亚洲欧美日韩综合aⅴ视频| 欧美电影在哪看比较好| 成人影视亚洲图片在线| 偷窥少妇高潮呻吟av久久免费| 国产视频一区不卡| 欧美片在线播放| 国产成人av福利| 亚洲成人免费av| 国产精品剧情在线亚洲| 91精品国产欧美日韩| 成人美女视频在线看| 三级精品在线观看| 亚洲欧美一区二区视频| 精品蜜桃在线看| 欧美自拍丝袜亚洲| 国产成人av一区二区三区在线观看| 亚洲一区在线观看网站| 国产精品入口麻豆九色| 精品少妇一区二区三区在线视频| 99vv1com这只有精品| 国产精品资源网| 午夜久久久久久久久久一区二区| 中文字幕一区二区不卡| 久久综合资源网| 欧美理论片在线| 色视频一区二区| 春色校园综合激情亚洲| 狠狠久久亚洲欧美| 日本视频在线一区| 亚洲综合小说图片| 亚洲欧洲精品成人久久奇米网| 精品国产免费人成在线观看| 欧美美女直播网站| 欧美亚男人的天堂| 在线观看91视频| 色综合久久久网| 成人av网站在线观看| 高清视频一区二区| 经典一区二区三区| 狠狠色丁香婷综合久久| 韩国三级电影一区二区| 狠狠色丁香久久婷婷综| 久久97超碰国产精品超碰| 美洲天堂一区二卡三卡四卡视频| 亚洲一区二区欧美日韩| 一区二区在线免费观看| 一区二区三区在线观看视频| 亚洲欧美日韩一区| 亚洲精品五月天| 一区二区免费在线播放| 亚洲免费在线视频一区 二区| ●精品国产综合乱码久久久久| 中文字幕av资源一区| 欧美激情一区二区| 国产精品欧美久久久久一区二区| 国产精品毛片久久久久久久| 中文字幕一区二区三区色视频| 亚洲视频在线一区观看| 一区二区三区在线观看国产| 亚洲午夜一区二区三区| 性久久久久久久| 免费在线观看精品| 国产高清在线观看免费不卡| 懂色av一区二区在线播放| 99精品国产91久久久久久| 欧洲中文字幕精品| 日韩一级片网站| 国产精品视频yy9299一区| 日韩毛片精品高清免费| 亚洲影视在线播放| 精品一区二区成人精品| 成人午夜在线播放| 欧美在线观看视频一区二区| 91精品国产综合久久久久久久久久| 日韩视频中午一区| 国产精品色婷婷久久58| 亚洲精品乱码久久久久久日本蜜臀| 亚洲午夜成aⅴ人片| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产一区二区三区精品视频| 91一区二区在线观看| 欧美精品xxxxbbbb| 国产精品天干天干在观线| 亚洲与欧洲av电影| 极品尤物av久久免费看| 日本大香伊一区二区三区| 欧美一卡二卡在线观看| 国产精品女同一区二区三区| 午夜精品123| kk眼镜猥琐国模调教系列一区二区| 欧美日韩一区二区在线视频| 2021中文字幕一区亚洲| 玉米视频成人免费看| 韩国精品久久久| 欧美日韩午夜在线| 国产三级精品在线| 日韩国产精品久久久久久亚洲| 国产精品一区二区久激情瑜伽| 欧美亚日韩国产aⅴ精品中极品| 亚洲精品一区二区三区在线观看| 亚洲精品成人悠悠色影视| 精品亚洲成av人在线观看| 91久久精品日日躁夜夜躁欧美| 欧美成人猛片aaaaaaa| 一区二区三区四区亚洲| 国产二区国产一区在线观看| 欧美一区二区久久久| 亚洲蜜桃精久久久久久久| 国产成人精品三级麻豆| 欧美一级电影网站| 五月婷婷欧美视频| 91亚洲精华国产精华精华液| 久久精品一区八戒影视| 麻豆精品在线看| 91精品国产综合久久久蜜臀粉嫩| 一区二区三区欧美亚洲| 99九九99九九九视频精品| 中文字幕成人网| 国产成人精品免费视频网站| 欧美成人一区二区三区片免费| 亚洲一本大道在线| 欧美亚州韩日在线看免费版国语版| 国产精品成人免费在线| 成人综合在线观看| 欧美高清一级片在线观看| 国产乱国产乱300精品| 精品国产成人在线影院 | 欧美一级日韩一级| 午夜欧美电影在线观看| 欧美日韩国产一级| 视频一区中文字幕| 91精品视频网| 美女看a上一区| 精品少妇一区二区三区免费观看| 秋霞午夜av一区二区三区| 日韩欧美国产午夜精品| 久久国产婷婷国产香蕉| 久久夜色精品国产噜噜av|