Delphi WinAPI: SetLayeredWindowAttributes - 设置窗口的透明


本文整理自网络,侵删。

 
//声明:
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.

相关阅读 >>

Delphi 2009 中 string 与 char 的改变

Delphi 判断表字段是否存在

Delphi 使用shellexecuteex运行应用程序并等待完成

Delphi rgb 画出三角形

Delphi获取进程快照(snapshot)

Delphi获取优盘的id

Delphi xe7开发的获取网页中字符串的编码是否是utf8

Delphi 编译发布安卓的app名字问题

Delphi 修改exe应用程序图标

Delphi inc () 计数用法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...