分享

实现类似QQ显示桌面仍显示窗体

 独孤求财 2012-03-14

实现类似QQ显示桌面仍显示窗体

时间:2011-5-30来源:yang 作者: peng点击: 40次

Form1:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AppEvnts, StdCtrls;

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    Button1: TButton;
    Button2: TButton;
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WMHide(var msg:TMessage);Message WM_SYSCOMMAND;

  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

{ TForm1 }



procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
 if msg.message=WM_SYSCOMMAND then
   begin
 
     if msg.wParam=SC_MINIMIZE THEN
     begin
     handled:=true;
      sendmessage(handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
     exit;
     end;
   end;    
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 ExtendedStyle:integer;
begin
ExtendedStyle:=windows.GetWindowLong(Application.Handle,GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,ExtendedStyle or 128);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
windows.SetWindowPos(form2.Handle,HWND_TOPMOST,0,0,form2.Width,form2.Height,SWP_SHOWWINDOW  or SWP_NOMOVE  );
self.SetFocus;
end;

procedure TForm1.WMHide(var msg: TMessage);
begin
IF MSG.WParam=SC_MINIMIZE THEN
begin
      self.Width:=100;
      self.Height:=100;
      self.Left:=screen.WorkAreaLeft+screen.WorkAreaWidth-self.Width;
      self.Top:=screen.WorkAreaTop+screen.WorkAreaHeight-self.Height;
      exit;
end;
inherited;
end;  

procedure TForm1.Button2Click(Sender: TObject);
begin
form2.Close;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
windows.SetWindowPos(Handle,HWND_TOPMOST,0,0,Width,Height,SWP_SHOWWINDOW  or SWP_NOMOVE  );
end;

end.


Form2:

unit Unit2;

interface

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

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
   //procedure WMHIDE(var msg:TMessage);Message WM_SYSCOMMAND;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }



end.
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多