在delphi5下怎么制作透明窗体: PROCEDURE Tform1.CMEraseBkgnd(var Message:TWMEraseBkgnd);
BEGIN
brush.style:=bsClear;
Inherited;
END;以上代码是进行消息拦截 可是怎么使用啊。
请高手指教!
BEGIN
brush.style:=bsClear;
Inherited;
END;以上代码是进行消息拦截 可是怎么使用啊。
请高手指教!
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
begin
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height) ;
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight) ;
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF) ;
X := X ;
Y := Y ;
ButtonRgn := CreateRectRgn(X, Y, X , Y ) ;
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR) ;
SetWindowRgn(Handle, FullRgn, True) ;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Handle,SW_SHOWNOACTIVATE);
end;
不是完全透明的话使用AlphaBlend,但是只有Win2000+才支持。
procedure WndProc(var Message: TMessage); override;procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_ERASEBKGND then
begin
Canvas.Brush.Style := bsClear;
end else
Inherited WndProc(Message);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
AlphaBlendValue := 200;
AlphaBlend := True;
end;两个取其中一个就可以了。我也是根据上面兄弟的提示做的。