如何使易语言制作的窗口背景透明

2025-05-01 15:26:19
推荐回答(1个)
回答1:

相关API函数:
GetWindowLong:获得有关指定窗口的信息;
SetWindowLong:改变指定窗口的属性;
SetLayeredWindowAttributes:设置分层窗口透明度。
DLL命令表:
1.
.版本
2
.DLL命令
GetWindowLong,
整数型,
"user32.dll",
"GetWindowLongA"
.参数
hwnd,
整数型
.参数
nlndex,
整数型
2.
.版本
2
.DLL命令
SetWindowLong,
整数型,
,
"SetWindowLongA"
.参数
hwnd,
整数型
.参数
nIndex,
整数型
.参数
dwNewLong,
整数型
3.
.版本
2
.DLL命令
SetLayeredWindowAttributes,
逻辑型,
,
"SetLayeredWindowAttributes"
.参数
hwnd,
整数型
.参数
crKey,
整数型
.参数
bAlpha,
字节型
.参数
dwFlags,
整数型
SetLayeredWindowAttributes参数简介:
hwnd:窗口句柄;
crKey:需要透明的颜色值;
bAlpha:透明度,取值范围0~255,0表示完全透明,255表示完全不透明;
dwFlags:透明方式。
其中,参数dwFlags可取以下值:
LWA_ALPHA:参数crKey(颜色值)无效,参数bAlpha(透明度)有效;
LWA_COLORKEY:窗体中所有颜色为crKey的地方完全透明,参数bAlpha(透明度)无效;
LWA_ALPHA|LWA_COLORKEY:窗体中所有颜色为crKey的地方完全透明,其他地方根据参数bAlpha确定透明度。
易语言十进制中,#LWA_ALPHA=2,#LWA_COLORKEY=1,位或
(#LWA_ALPHA,
#LWA_COLORKEY)=3
透明方式一:窗口底色完全透明,控件完全不透明。源码如下。
.版本
2
.子程序
__启动窗口_创建完毕
.局部变量
rtn,
整数型
rtn

GetWindowLong
(取窗口句柄
(),
-20)
SetWindowLong
(取窗口句柄
(),
-20,
位或
(rtn,
524288))
SetLayeredWindowAttributes
(取窗口句柄
(),
底色,
0,
1)
效果如下:上图为正常窗口,下面为透明窗口。
注:窗口底色不能使用默认底色。
透明方式二:窗口半透明。源码如下。
.版本
2
.子程序
__启动窗口_创建完毕
.局部变量
rtn,
整数型
rtn

GetWindowLong
(取窗口句柄
(),
-20)
SetWindowLong
(取窗口句柄
(),
-20,
位或
(rtn,
524288))
SetLayeredWindowAttributes
(取窗口句柄
(),
底色,
120,
2)
效果如下:上图为正常窗口,下图为透明窗口。
注:窗口底色不能使用默认底色。
透明方式三:窗口底色完全透明,控件半透明。源码如下。
.版本
2
.子程序
__启动窗口_创建完毕
.局部变量
rtn,
整数型
rtn

GetWindowLong
(取窗口句柄
(),
-20)
SetWindowLong
(取窗口句柄
(),
-20,
位或
(rtn,
524288))
SetLayeredWindowAttributes
(取窗口句柄
(),
底色,
120,
3)
效果如下:上图为正常窗口,下图为透明窗口。
注:窗口底色不能使用默认底色。