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