设置窗体透明,并且窗体上的控件不透明 (Win2000以上有效)
procedure TransForm(Form: TForm; FColor: TColor=clFuchsia; FAlpha: Integer=158; FShowType: Integer=0);
var
Exstyle: DWORD;
vflag: Cardinal;
begin
Case FShowType of
0: vflag := LWA_ALPHA;
1: vflag := LWA_COLORKEY;
2: vflag := LWA_ALPHA or LWA_COLORKEY;
end;
Form.Color := FColor;
Exstyle := GetWindowLong(Form.Handle, GWL_EXSTYLE);
Exstyle := ExStyle or WS_EX_LAYERED;
SetWindowLong(Form.Handle, GWL_EXSTYLE, ExStyle);
SetLayeredWindowAttributes(Form.Handle, //指定分层窗口句柄
FColor, //crKey指定需要透明的背景颜色值,可用RGB()宏 0-255
FAlpha, //bAlpha设置透明度,0表示完全透明,255表示不透明
vflag); //LWA_ALPHA: crKey无效,bAlpha有效;
//LWA_COLORKEY:窗体中的所有颜色为crKey的地方全透明,bAlpha无效。
//LWA_ALPHA | LWA_COLORKEY:crKey的地方全透明,其它地方根据bAlpha确定透明度
end;