程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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