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

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

?? flatwnd.pas

?? comerose_flatstyle_v4.42.9.0_d7.rar
?? PAS
字號:
unit FlatWnd;

interface

{$I FlatStyle.inc}

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

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(TVersionComponent)
  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一区二区三区免费野_久草精品视频
成人在线视频一区| 日本亚洲视频在线| 91免费在线看| 又紧又大又爽精品一区二区| 91在线观看地址| 亚洲综合男人的天堂| 欧美日韩一区不卡| 午夜精品久久久久久久99樱桃| 欧美三级韩国三级日本三斤| 日韩理论在线观看| 在线精品国精品国产尤物884a | 欧美不卡一区二区三区| 美女性感视频久久| 国产午夜精品在线观看| 一本到三区不卡视频| 亚洲午夜激情av| 精品久久99ma| 97精品视频在线观看自产线路二| 亚洲综合视频网| 欧美变态口味重另类| 丁香婷婷深情五月亚洲| 亚洲精选视频在线| 91精品国产综合久久精品图片| 在线免费av一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 99久久精品免费看| 亚洲激情校园春色| 日韩欧美国产三级电影视频| 成人免费av资源| 亚洲主播在线观看| 久久久久国色av免费看影院| 色综合天天综合在线视频| 午夜精品影院在线观看| 久久天堂av综合合色蜜桃网| 91福利视频在线| 久久se这里有精品| 一区二区日韩电影| 国产亚洲一区字幕| 777午夜精品视频在线播放| 成人三级伦理片| 裸体健美xxxx欧美裸体表演| 国产精品天天摸av网| 欧美一级在线免费| 91蝌蚪国产九色| 国产黄色91视频| 蜜臀av一级做a爰片久久| 亚洲精品第1页| 中文字幕免费不卡在线| 日韩一区二区电影网| 日本伦理一区二区| 国产ts人妖一区二区| 日韩av电影天堂| 亚洲福中文字幕伊人影院| 国产精品午夜春色av| 欧美极品xxx| 色婷婷综合久久久久中文一区二区 | 久久久噜噜噜久噜久久综合| 欧美日韩中文一区| 波多野结衣在线一区| 九九**精品视频免费播放| 亚洲a一区二区| 亚洲免费色视频| 国产精品美日韩| 久久久久久久久久久黄色| 日韩一区二区免费视频| 欧美一区二区播放| 欧美日本韩国一区二区三区视频| 日本福利一区二区| 99视频精品全部免费在线| 成人激情视频网站| 国产91精品久久久久久久网曝门| 激情六月婷婷久久| 男男gaygay亚洲| 青椒成人免费视频| 日韩在线观看一区二区| 婷婷久久综合九色国产成人 | 6080yy午夜一二三区久久| 欧美中文一区二区三区| 在线观看一区二区视频| 91农村精品一区二区在线| 91在线视频在线| 色菇凉天天综合网| 色婷婷综合久久久久中文| 欧美亚州韩日在线看免费版国语版| 91丝袜国产在线播放| 91在线无精精品入口| 91激情在线视频| 色噜噜狠狠一区二区三区果冻| 色综合天天视频在线观看 | 日韩激情av在线| 青青草精品视频| 狠狠色丁香久久婷婷综合丁香| 国产一区二区看久久| 国产麻豆成人精品| 99久久久国产精品| 在线观看日韩毛片| 欧美一区二视频| 精品国产精品网麻豆系列| 精品日韩成人av| 中文字幕精品一区二区精品绿巨人 | 亚洲视频在线观看三级| 亚洲自拍都市欧美小说| 日本视频免费一区| 国产精品自在欧美一区| 成人福利视频网站| 91丨九色porny丨蝌蚪| 精品视频在线视频| 日韩免费观看高清完整版 | 日韩精品每日更新| 秋霞av亚洲一区二区三| 国产激情一区二区三区桃花岛亚洲| 91在线观看免费视频| 在线综合视频播放| 国产女人水真多18毛片18精品视频 | 精品蜜桃在线看| 亚洲欧美怡红院| 日韩av电影天堂| 91在线观看视频| 日韩一区二区视频| 国产精品丝袜久久久久久app| 一区二区三区四区激情| 蜜桃视频一区二区| 99国产精品国产精品久久| 91麻豆精品国产91久久久更新时间 | 国产精品激情偷乱一区二区∴| 亚洲成人综合在线| 国产精品一区二区久久不卡 | 日韩理论在线观看| 精品一区二区三区香蕉蜜桃 | 国产精品人妖ts系列视频| 亚洲成av人影院| 成人激情图片网| 精品久久久久久久久久久久久久久久久 | 亚洲va欧美va人人爽| 国产二区国产一区在线观看| 欧美视频日韩视频| 欧美激情一区在线| 毛片av一区二区三区| 欧美亚洲日本一区| 国产精品天干天干在线综合| 久久av老司机精品网站导航| 色哟哟在线观看一区二区三区| 精品不卡在线视频| 日韩黄色小视频| 一本一道波多野结衣一区二区| 精品福利在线导航| av电影一区二区| 337p日本欧洲亚洲大胆精品| 日韩国产欧美一区二区三区| 99视频有精品| 久久综合色综合88| 免费成人美女在线观看.| 欧美午夜精品久久久久久孕妇| 中文字幕一区免费在线观看| 国产乱人伦精品一区二区在线观看 | 亚洲第四色夜色| 97久久精品人人澡人人爽| 久久久综合精品| 麻豆成人免费电影| 欧美一区二区视频免费观看| 亚洲一区二区视频| 成人av电影在线观看| 国产亚洲欧洲一区高清在线观看| 美女国产一区二区| 欧美一区二区三区免费视频| 天堂蜜桃91精品| 欧美日韩精品欧美日韩精品一| 亚洲午夜久久久久久久久久久| 日本高清不卡一区| 亚洲一区二区精品3399| 精品视频一区三区九区| 午夜精品成人在线| 欧美日韩国产综合一区二区| 天堂久久一区二区三区| 欧美一卡在线观看| 久久成人麻豆午夜电影| wwwwww.欧美系列| 国产精品一区二区在线观看网站 | 欧美一区二区三区免费在线看| 午夜不卡在线视频| 欧美日韩国产精品自在自线| 日本中文字幕一区| 日韩一区二区在线播放| 国产美女精品人人做人人爽| 国产欧美日韩精品在线| 不卡的电视剧免费网站有什么| 亚洲欧洲成人自拍| 欧美亚洲综合在线| 热久久一区二区| 久久精品人人做| eeuss鲁片一区二区三区| 亚洲靠逼com| 8x8x8国产精品| 加勒比av一区二区| 中文字幕欧美区| 欧美日韩亚洲综合在线| 久久国产免费看| 中文字幕日韩一区| 欧美日韩国产成人在线免费| 免费视频一区二区|