如何使易语言制作的窗口背景透明
发布网友
发布时间:2022-04-29 07:03
我来回答
共1个回答
热心网友
时间:2022-06-20 22:52
相关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)
效果如下:上图为正常窗口,下图为透明窗口。
注:窗口底色不能使用默认底色。追问直接复制么,我新手