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法式設計有所贊助。