procedure TF_MAIN.SetUp;
var
pt: TPoint;
begin
GetCursorPos(pt);
if (not PtInRect(Self.BoundsRect, pt)) and (GetAsyncKeyState(VK_LButton) <> 0) then
Exit;
if PtInRect(Self.BoundsRect, pt) then Exit;
if Top > 3 then Exit;
Top := -Height + 3; //将窗口上缩,只显示三像素
Timer1.Enabled := False;
end;
//鼠标移动
procedure TF_MAIN.WMMOVING(var Msg: TMessage);
begin
if PRECT(Msg.lParam).Top <= 3 then
PRECT(Msg.lParam).Top := 0;
end;
这个其实道理很简单就是判断这个窗体的一段是否靠在了屏幕的边缘,如果是的话,哪端靠在屏幕边缘,你就把窗体往那个方向移动
procedure FUpdateOnMOve(var Msg: TMsg); message WM_MOVE; //收到移动消息
procedure Tform1.FUpdateOnMOve(var Msg: TMsg); message WM_MOVE; //收到移动消息
begin
//可以判断,窗体是否需要隐藏
end;
//隐藏时候的效果,可以再网上找一下很多