发信人: 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 █
███████ |
|