这是来宾 Dolby 在
http://www.cnblogs.com/del/archive/2008/03/08/1081295.html#1096814
询问的问题.
//声明:
SetLayeredWindowAttributes(
Hwnd: THandle; {窗口句柄}
crKey: COLORREF; {透明色}
bAlpha: Byte; {Alpha 值}
dwFlags: DWORD {LWA_COLORKEY(=1)表示使用透明色; LWA_ALPHA(=2)表示使用 Alpha 值}
): Boolean; {是否成功设置}
//举例(控制外部程序的透明度, 用计算器举了个例子):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{设定计算器的 Alpha 透明}
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
FormStyle: Integer;
begin
h := FindWindow('SciCalc', nil);
FormStyle := GetWindowLong(h, GWL_EXSTYLE);
SetWindowLong(h, GWL_EXSTYLE, FormStyle or WS_EX_LAYERED);
SetLayeredWindowAttributes(h, 0, 128, LWA_ALPHA);
end;
{设定计算器中的白色透明}
procedure TForm1.Button2Click(Sender: TObject);
var
h: HWND;
FormStyle: Integer;
begin
h := FindWindow('SciCalc', nil);
FormStyle := GetWindowLong(h, GWL_EXSTYLE);
SetWindowLong(h, GWL_EXSTYLE, FormStyle or WS_EX_LAYERED);
SetLayeredWindowAttributes(h, clWhite, 255, LWA_COLORKEY);
end;
end.