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

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

?? tflatanimwndunit.pas

?? 貨代程序
?? PAS
字號:
unit TFlatAnimWndUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TFlatAnimWnd = class;

  TFlatAnimHookWnd = class(TWinControl)
  private
    FAnimateWindow: TFlatAnimWnd;
    procedure WMCreate (var Message: TMessage); message WM_CREATE;
    procedure WMDestroy (var Message: TMessage); message WM_DESTROY;
  public
    constructor Create (AOwner: TComponent); override;
  end;

  TFlatAnimWnd = class(TComponent)
  private
    FOwner: TComponent;
    FNewProc, FOldProc, FNewAppProc, FOldAppProc: TFarProc;
    FOnMinimize: TNotifyEvent;
    FOnRestore: TNotifyEvent;
    procedure NewWndProc (var Message: TMessage);
    procedure NewAppWndProc (var Message: TMessage);
    procedure MinimizeWnd;
    procedure RestoreWnd;
    procedure OwnerWndCreated;
    procedure OwnerWndDestroyed;
  protected
    FHookWnd: TFlatAnimHookWnd;
    procedure SetParentComponent(Value: TComponent); override;
  public
    constructor Create (AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Minimize;
  published
    property OnMinimize: TNotifyEvent read FOnMinimize write FOnMinimize;
    property OnRestore: TNotifyEvent read FOnRestore write FOnRestore;
  end;

implementation

var
  OwnerList: TList;

constructor TFlatAnimHookWnd.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FAnimateWindow := TFlatAnimWnd(AOwner);
end;

procedure TFlatAnimHookWnd.WMCreate(var Message: TMessage);
begin
  inherited;
  FAnimateWindow.OwnerWndCreated;
end;

procedure TFlatAnimHookWnd.WMDestroy(var Message: TMessage);
begin
  FAnimateWindow.OwnerWndDestroyed;
  inherited;
end;

constructor TFlatAnimWnd.Create(AOwner: TComponent);
begin
  FOwner := AOwner;
  if OwnerList.IndexOf(FOwner) <> -1 then
  begin
    FOwner := nil;
    raise Exception.Create('Owner must be TFORM');
  end;
  inherited Create(AOwner);
  if not (csDesigning in ComponentState) then
  begin
    FHookWnd := TFlatAnimHookWnd.Create(Self);
    if Application.MainForm = nil then
    begin
      FNewAppProc := MakeObjectInstance(NewAppWndProc);
      FOldAppProc := Pointer(GetWindowLong(Application.Handle, GWL_WNDPROC));
      SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(FNewAppProc));
    end;
  end;
  OwnerList.Add(FOwner);
end;

destructor TFlatAnimWnd.Destroy;
begin
  if not(csDesigning in ComponentState) then
  begin
    if Application.MainForm = nil then
    begin
      SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(FOldAppProc));
      FreeObjectInstance(FNewAppProc);
    end;
  end;
  if OwnerList.IndexOf(FOwner) <> -1 then
    OwnerList.Remove(FOwner);
  inherited Destroy;
end;

procedure TFlatAnimWnd.SetParentComponent(Value: TComponent);
begin
  inherited SetParentComponent(Value);
  if not(csDesigning in ComponentState) then
    if Value is TWinControl then
      FHookWnd.Parent := TWinControl(Value);
end;

procedure TFlatAnimWnd.OwnerWndCreated;
begin
  FNewProc := MakeObjectInstance(NewWndProc);
  FOldProc := Pointer(GetWindowLong((FOwner as TForm).Handle, GWL_WNDPROC));
  SetWindowLong((FOwner as TForm).Handle, GWL_WNDPROC, Longint(FNewProc));
end;

procedure TFlatAnimWnd.OwnerWndDestroyed;
begin
  SetWindowLong((FOwner as TForm).Handle, GWL_WNDPROC, Longint(FOldProc));
  FreeObjectInstance(FNewProc);
end;

procedure TFlatAnimWnd.NewAppWndProc(var Message: TMessage);
begin
  with Message do
  begin
    if Msg = WM_SYSCOMMAND then
      case WParam of
        SC_MINIMIZE:
          MinimizeWnd;
        SC_RESTORE:
          RestoreWnd;
      end;
    Result := CallWindowProc(FOldAppProc, Application.Handle, Msg, wParam, lParam);
  end;
end;

procedure TFlatAnimWnd.NewWndProc(var Message: TMessage);
begin
  with Message do
  begin
    if (Msg = WM_SYSCOMMAND) and (WParam = SC_MINIMIZE) then
    begin
      if Application.MainForm = FOwner then
        MinimizeWnd
      else
        PostMessage(Application.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    end
    else
    begin
      if (Msg = WM_WINDOWPOSCHANGING) and (PWindowPos(lParam)^.flags = (SWP_NOSIZE or SWP_NOMOVE)) then
      begin
        if IsIconic(Application.Handle) then
          PostMessage(Application.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
      end
    end;
    Result := CallWindowProc(FOldProc, (FOwner as TForm).Handle, Msg, wParam, lParam);
  end;
end;

procedure TFlatAnimWnd.MinimizeWnd;
var
  Rect: TRect;
begin
  with Application do
  begin
    if not(IsWindowEnabled(Handle)) then
      EnableWindow(Handle, True);
    GetWindowRect((FOwner as TForm).Handle, Rect);
    SetForegroundWindow(Handle);
    SetWindowPos(Handle, 0, Rect.Left, Rect.Top, Rect.Right - Rect.Left, 0, SWP_NOZORDER);
    DefWindowProc(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    ShowWindow(Handle, SW_MINIMIZE);
  end;
  if Assigned(FOnMinimize) then
    FOnMinimize(Application);
end;

procedure TFlatAnimWnd.RestoreWnd;
var
  MainFormPlacement: TWindowPlacement;
  AppWndPlacement: TWindowPlacement;
begin
  with Application do
  begin
    MainFormPlacement.length := SizeOf(TWindowPlacement);
    MainFormPlacement.flags  := 0;
    GetWindowPlacement(MainForm.Handle, @MainFormPlacement);
    AppWndPlacement.length := SizeOf(TWindowPlacement);
    AppWndPlacement.flags  := 0;
    GetWindowPlacement(Handle, @AppWndPlacement);
    AppWndPlacement.rcNormalPosition := MainFormPlacement.rcNormalPosition;
    AppWndPlacement.rcNormalPosition.Bottom := AppWndPlacement.rcNormalPosition.Top;
    SetWindowPlacement(Handle, @AppWndPlacement);
    SetForegroundWindow(Handle);
    DefWindowProc(Application.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
    ShowWindow(Handle, SW_RESTORE);
    SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOZORDER);
    if not(MainForm.Visible) then
    begin
      ShowWindow(MainForm.Handle, SW_RESTORE);
      MainForm.Visible := True;
    end;
  end;
  if Assigned(FOnRestore) then
    FOnRestore(Application);
end;

procedure TFlatAnimWnd.Minimize;
begin
  SendMessage((FOwner as TForm).Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;

initialization
  OwnerList := TList.Create;

finalization
  OwnerList.Free;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页国产丝袜综合| 欧美日韩视频一区二区| 国产精品综合二区| 国产一区二区看久久| 激情六月婷婷久久| 国产河南妇女毛片精品久久久 | 国产精品夜夜嗨| 精品一区二区三区久久| 久久精品国产99久久6| 人人精品人人爱| 九九精品一区二区| 国产一区在线看| 国产乱国产乱300精品| 国产suv精品一区二区三区| 岛国av在线一区| 99麻豆久久久国产精品免费 | 国产一区 二区| 国产91高潮流白浆在线麻豆| 成人综合在线观看| 91视频免费观看| 在线看一区二区| 欧美一区二区精美| 精品日产卡一卡二卡麻豆| 久久久亚洲午夜电影| 欧美国产激情二区三区| 综合分类小说区另类春色亚洲小说欧美| 国产精品久久久久久久浪潮网站| 1000精品久久久久久久久| 亚洲精品国产精品乱码不99 | 91啪九色porn原创视频在线观看| 色久优优欧美色久优优| 欧美精品久久天天躁| 欧美精品一区在线观看| 自拍av一区二区三区| 婷婷综合另类小说色区| 国产一区二区在线观看免费 | 欧美激情一区二区三区蜜桃视频| 亚洲日本va午夜在线电影| 婷婷成人激情在线网| 激情综合色综合久久| av电影天堂一区二区在线观看| 欧美午夜一区二区| 久久影音资源网| 夜夜操天天操亚洲| 国产在线观看一区二区| 一本久久精品一区二区| 欧美tk丨vk视频| 亚洲柠檬福利资源导航| 久久国产精品72免费观看| 91日韩一区二区三区| 精品日韩一区二区| 亚洲一区在线视频观看| www.色综合.com| 日韩一区二区三区在线观看| 国产精品私人影院| 婷婷国产v国产偷v亚洲高清| 成人成人成人在线视频| 欧美一区二区三区影视| 成人欧美一区二区三区1314| 奇米影视一区二区三区小说| 99免费精品在线观看| 精品乱码亚洲一区二区不卡| 亚洲与欧洲av电影| 国产精品一区免费在线观看| 欧美日韩精品久久久| 国产精品青草久久| 伦理电影国产精品| 欧美性大战xxxxx久久久| 国产欧美精品区一区二区三区| 日本不卡一二三| 色婷婷狠狠综合| 国产精品无圣光一区二区| 麻豆精品视频在线观看免费 | 国产精品不卡一区| 国模大尺度一区二区三区| 欧美日韩一区二区三区四区五区 | 久久久久久综合| 视频在线观看91| 色乱码一区二区三区88| 日本一区二区三区久久久久久久久不| 奇米色一区二区三区四区| 欧美综合亚洲图片综合区| 亚洲欧洲国产日韩| 国产精品资源在线| 精品国产污污免费网站入口 | 亚洲美腿欧美偷拍| 国产成+人+日韩+欧美+亚洲| 精品少妇一区二区三区视频免付费 | 91香蕉视频在线| 日本一区免费视频| 国产一区二三区好的| 日韩欧美一二区| 免费美女久久99| 这里只有精品99re| 天堂精品中文字幕在线| 欧美午夜精品免费| 一区二区三区四区不卡在线| 99久久精品国产导航| 奇米色777欧美一区二区| 欧美日韩在线直播| 亚洲国产综合人成综合网站| 欧美在线观看禁18| 亚洲在线免费播放| 欧美日韩成人一区| 亚洲成av人片一区二区三区 | 亚洲欧洲精品天堂一级| 91视频.com| 亚洲综合色婷婷| 日本高清成人免费播放| 亚洲一区在线看| 欧美午夜一区二区| 视频一区二区中文字幕| 日韩一级片网站| 韩国av一区二区三区四区| 精品国产精品网麻豆系列| 国产精品一区二区久激情瑜伽| 久久亚洲欧美国产精品乐播| 国产美女娇喘av呻吟久久| 欧美激情一区二区三区蜜桃视频| 成人黄色在线视频| 亚洲精品乱码久久久久久| 欧美乱妇15p| 国产综合成人久久大片91| 国产色产综合产在线视频| 99精品欧美一区二区三区综合在线| 悠悠色在线精品| 91精品一区二区三区在线观看| 久久草av在线| 中文字幕一区在线观看视频| 色婷婷久久久综合中文字幕| 日韩精品一二区| 久久久综合九色合综国产精品| 99在线精品观看| 天堂va蜜桃一区二区三区漫画版| 日韩欧美激情一区| 成人激情电影免费在线观看| 一区二区三区鲁丝不卡| 日韩精品一区二区三区视频在线观看 | 亚洲成av人片在线观看无码| 日韩精品中文字幕一区| 成人国产一区二区三区精品| 亚洲第一福利视频在线| 精品国产91久久久久久久妲己 | 色视频成人在线观看免| 免费成人在线观看| 欧美国产日韩在线观看| 欧美日韩中文国产| 国产成人午夜电影网| 亚洲最大色网站| 久久久久久久久99精品| 日本韩国视频一区二区| 久久99久国产精品黄毛片色诱| 中文字幕日韩av资源站| 欧美一区二区免费视频| 99精品一区二区三区| jiyouzz国产精品久久| 亚洲福利视频导航| 久久久久久久国产精品影院| 色综合天天综合网天天狠天天 | 56国语精品自产拍在线观看| 丁香六月综合激情| 爽好多水快深点欧美视频| 国产精品蜜臀av| 日韩欧美国产系列| av一区二区久久| 国产在线一区二区| 三级一区在线视频先锋| 国产精品看片你懂得| 精品三级在线看| 欧美视频中文字幕| 成人在线综合网站| 老司机午夜精品99久久| 亚洲一区二区三区影院| 国产精品麻豆网站| 欧美精品一区男女天堂| 欧美三级电影网站| 色婷婷久久99综合精品jk白丝| 国产精品一区二区无线| 免费成人结看片| 亚洲线精品一区二区三区八戒| 欧美国产视频在线| 久久噜噜亚洲综合| 精品少妇一区二区三区在线视频| 欧美系列在线观看| 色8久久人人97超碰香蕉987| 成人精品视频.| 国产真实乱偷精品视频免| 免费视频一区二区| 丝袜美腿亚洲一区二区图片| 亚洲一区二区三区精品在线| ●精品国产综合乱码久久久久| 日本一二三不卡| 国产调教视频一区| 久久天堂av综合合色蜜桃网| 欧美一级夜夜爽| 欧美一区二区三区在线观看视频| 欧美精品乱码久久久久久| 欧美日韩在线三区| 欧美理论在线播放| 欧美日本高清视频在线观看|