DELPHI 如何让鼠标穿透控件
在窗体上放一个Button1
1 仅让Button1这个区域 是透明的
2 仅Button1这个区域 鼠标可以穿透
请问题如何实现
请出代码
注
眼睛护士 有个功能是 屏幕关灯功能 就是本例要实现的
能点到Form1的窗体后面的东西 即桌面上的东西 但只限在Button1的窗体后面
效果如图
控件穿透?透明
[解决办法]
核心代码在此了:
procedure TForm1.SetRgn;
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
tp1, tp2 : TPoint;
function MakeRgn(c:TControl):THandle;
var tp,tp2:TPoint;x,y:Integer;
begin
tp1 := Point(Left,top);
tp := c.ClientToScreen(Point(0,0));
x := tp.X-tp1.X;
y := tp.Y-tp1.Y;
Result:=CreateRectRgn(x,y,x+c.Width,y+c.Height);
end;
begin
//边框宽度
Margin := (Width - ClientWidth) div 2;
//整个区域
FullRgn := CreateRectRgn(0, 0, Width, Height);
//中心区域
ClientRgn := MakeRgn(button1);
//裁剪区域
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
SetWindowRgn(Handle, FullRgn, True);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
setrgn;
end;