发信人: cobe(失恋!痛苦!) 
整理人: soaringbird(2001-11-01 10:10:27), 站内信件
 | 
 
 
我根据以前几位朋友的提示,写了一个实验代码,成功了,特别共享出来
 
 其它想要这种效果的朋友可以走走捷径,呵呵。
 
 在这里下载
 -----------------------------------------------------
 代码如下:(1个按钮,1个Scrollbar)
 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;
 
 Const
     WS_EX_LAYERED = $80000;
     AC_SRC_OVER = $0;
     AC_SRC_ALPHA = $1;
     AC_SRC_NO_PREMULT_ALPHA = $1;
     AC_SRC_NO_ALPHA = $2;
     AC_DST_NO_PREMULT_ALPHA = $10;
     AC_DST_NO_ALPHA = $20;
     LWA_COLORKEY = $1;
     LWA_ALPHA = $2;
     ULW_COLORKEY = $1;
     ULW_ALPHA = $2;
     ULW_OPAQUE = $4;
 //新增加的常量定义
 
 type
   TForm1 = class(TForm)
     Button1: TButton;
     ScrollBar1: TScrollBar;
     procedure ScrollBar1Change(Sender: TObject);
     procedure FormCreate(Sender: TObject);
   private
     hWindows:longint;
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;//函数声明
 
 implementation
 
 {$R *.DFM}
 
 procedure TForm1.ScrollBar1Change(Sender: TObject);
 begin
   SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_LAYERED);
   SetLayeredWindowAttributes(Self.Handle,0,ScrollBar1.Position,LWA_ALPHA);
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
   hWindows:=GetWindowLong(Handle,GWL_STYLE);  //保存原来的属性
   SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_LAYERED);//设置新的扩展属性
   {
     第1个参数:窗体句柄
     第2个参数:一个RGB值,用来告诉窗体中那种颜色需要透明
     第3个参数:透明度(0-255)
     第4个参数:指定是通过第2个参数还是第3个参数来设置透明度
   }
   SetLayeredWindowAttributes(Self.Handle,0, 100, LWA_ALPHA);//设置透明度
 end;
 
 end.
 
 
  ---- ███████
 █ VB版 █
 █版务专用章█
 █cobe █
 ███████                             | 
 
 
 |