在delphi5下怎么制作透明窗体: PROCEDURE Tform1.CMEraseBkgnd(var Message:TWMEraseBkgnd);
BEGIN
  brush.style:=bsClear;
  Inherited;
END;以上代码是进行消息拦截  可是怎么使用啊。
请高手指教!

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
      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;
      

  2.   

    透明窗体Delphi本身就有属性,Alpha,
      

  3.   

    透明的话设置Fotm.Canvas.Brsush.Style为bsClear就可以了。
    不是完全透明的话使用AlphaBlend,但是只有Win2000+才支持。
      

  4.   

    protected
        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;两个取其中一个就可以了。我也是根据上面兄弟的提示做的。