程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Delphi完成窗體感知鼠標滑過並主動隱蔽與顯示窗口的辦法

Delphi完成窗體感知鼠標滑過並主動隱蔽與顯示窗口的辦法

編輯:更多關於編程

Delphi完成窗體感知鼠標滑過並主動隱蔽與顯示窗口的辦法。本站提示廣大學習愛好者:(Delphi完成窗體感知鼠標滑過並主動隱蔽與顯示窗口的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Delphi完成窗體感知鼠標滑過並主動隱蔽與顯示窗口的辦法正文


本文實例講述了Delphi完成窗體感知鼠標滑過並主動隱蔽與顯示窗口的辦法。分享給年夜家供年夜家參考。詳細完成辦法以下:

const
 WM_MouseEnter = $B013;
 WM_MouseLeave = $B014;
type
 TfrmMain = class(TForm)
  .
  .
 Timer1: TTimer;
 procedure Timer1Timer(Sender: TObject);
 protected
 procedure WMMouseEnter(var Msg: TMessage); message WM_MouseEnter;
 end;
implementation
{$R *.dfm}
procedure TfrmMain.WMMouseEnter(var Msg: TMessage);
begin
 if(Top<0) then
 begin
 Top := 0;
 //為包管下拉窗體後出現在最後面
 SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
 //將窗體推到最前
 SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
 //然後撤消窗體最前
 end;
 Timer1.Enabled := True;
end;
//依附准時器准時檢討鼠標能否還在窗體規模內,
//如許此能防止由於疾速挪動鼠標而喪失MOUSELEAVE事宜
procedure TfrmMain.Timer1Timer(Sender: TObject);
var
 rc:TRECT;
 pt:TPOINT;
begin
 GetWindowRect(self.Handle,rc); //取窗體的矩形區域
 GetCursorPos(pt); //獲得以後鼠標地點地位
 if(not PtInRect(rc,pt)) then //假如鼠標不在窗體規模內
 begin
  if(Top = 0) then
  //假如今朝窗體正吸附在屏幕上沿,則上移隱蔽窗體
  begin
   Top := 0-Height+2;
  end;
  Timer1.Enabled := False; //窗體隱蔽後准時器封閉
  SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
  //將窗體推到最前
 end;
end;

願望本文所述對年夜家的Delphi法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved