冥界3大法王 发表于 2020-12-15 10:05

Delphi激活窗口时哪个事件?

本帖最后由 冥界3大法王 于 2020-12-15 10:36 编辑

以下源码:
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);    //窗口置顶


procedure TForm1.FormMouseLeave(Sender: TObject);
var
l: longint;
begin
l := getWindowLong(Handle, GWL_EXSTYLE);
l := l or WS_EX_LAYERED;
SetWindowLong(handle, GWL_EXSTYLE, l);
SetLayeredWindowAttributes(handle, 0, 180, LWA_ALPHA);    //第二个参数是指定透明颜色//第二个参数为0则使用第四个参数设置alpha值,从0到255
end;
求如何再还原原来的透明度呢? 试了几次,皆未能成功,求赐教。

pzx521521 发表于 2020-12-15 10:29

本帖最后由 pzx521521 于 2020-12-15 10:34 编辑

想简单
SetLayeredWindowAttributes(handle, 0, 255, LWA_ALPHA); SetLayeredWindowAttributes(handle, 0, 255, LWA_ALPHA);
完全还原:
var
l: longint;
begin
l := getWindowLong(Handle, GWL_EXSTYLE);
l := l and WS_EX_LAYERED;
SetWindowLong(handle, GWL_EXSTYLE, l);
SetLayeredWindowAttributes(handle, 0, 255, LWA_ALPHA); SetLayeredWindowAttributes(handle, 0, 255, LWA_ALPHA);
已测试 ok
因为是windows 的函数其实和delphi没什么关系, C++/C# 怎么调 就怎么调就好了
页: [1]
查看完整版本: Delphi激活窗口时哪个事件?