C++builder 中如何创建透明窗体.(100分)

  • 主题发起人 主题发起人 zealot1111
  • 开始时间 开始时间
Delphi下的例子:
private
procedure CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;
{拦截CMEraseBkgnd消息}
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.CMEraseBkgnd(var Message:TWMEraseBkgnd);
begin
Brush.style:=bsClear;{设置背景透明}
Inherited;
end;
 
和Delphi一样没有好办法, 除非你用win2000.
实现静态的透明窗很简单. 运行时先取得屏幕图案, 再显示窗体, 把获取的屏幕背景
作为窗体的背景图案. 简而言之, 先visible := False; 然后sleep(n) (必须步骤, 而且一
般n不能小于300ms) 然后BitBlt(Bmp.Canvas.handle, 0, 0, ClientWidth, ClientHeight,
GetDC(GetDesktopWindow), Left, Top, SRCCOPY); 然后再visible := True;
 
type
TForm1 = class(TForm)
...
procedure CreateParams(var Params: TCreateParams); override;
end;

implementation

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle:=Ws_Ex_Traansparent;
end;
procedure TForm1.Create;
begin
Brush.Style:=bsClear;
end
 
to LeeChange
你的代码98下能用吗
 
多人接受答案了。
 
请参阅小弟“抛砖引玉——透明Form”一题,提出您的见解。
 
后退
顶部