易语言可调用API函数SetLayeredWindowAttributes实现三种效果的窗口透明。
工具/原料
易语言
方法/步骤
1、相关API函数: GetWindowLong:获得有关指定窗口的信息; SetWindowLong:改变指定窗口的属性; SetLayeredWindowAttributes:设置分层窗口透明度。
2、DLL命令表: 1. .版本2 .锓旆痖颧DLL命令GetWindowLong,整数型,"user32.dll","GetWind泠贾高框owLongA" .参数hwnd,整数型 .参数nlndex,整数型 2. .版本2 .DLL命令SetWindowLong,整数型,,"SetWindowLongA" .参数hwnd,整数型 .参数nIndex,整数型 .参数dwNewLong,整数型 3. .版本2 .DLL命令SetLayeredWindowAttributes,逻辑型,,"SetLayeredWindowAttributes" .参数hwnd,整数型 .参数crKey,整数型 .参数bAlpha,字节型 .参数dwFlags,整数型
3、SetLayeredWindowAttributes参数简介: hwn蟠校盯昂d:窗口句柄; 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
4、透明方式一:窗口底色完全透明,控件完全不透明。源码如下。 .版本2 .子程序__启动窗口_创建完毕 .局部变量rtn,整数型 rtn=GetWindowLong(取窗口句柄(),-20) SetWindowLong(取窗口句柄(),-20,位或(rtn,524288)) SetLayeredWindowAttributes(取窗口句柄(),底色,0,1) 效果如下:上图为正常窗口,下面为透明窗口。 注:窗口底色不能使用默认底色。
5、透明方式二:窗口半透明。源码如下。 .版本2 .子程序__启动窗口_创建完毕 .局部变量rtn,整数型 rtn=GetWindowLong(取窗口句柄(),-20) SetWindowLong(取窗口句柄(),-20,位或(rtn,524288)) SetLayeredWindowAttributes(取窗口句柄(),底色,120,2) 效果如下:上图为正常窗口,下图为透明窗口。 注:窗口底色不能使用默认底色。
6、透明方式三:窗口底色完全透明,控件半透明。源码如下。 .版本2 .子程序__启动窗口_创建完毕 .局部变量rtn,整数型 rtn=GetWindowLong(取窗口句柄(),-20) SetWindowLong(取窗口句柄(),-20,位或(rtn,524288)) SetLayeredWindowAttributes(取窗口句柄(),底色,120,3) 效果如下:上图为正常窗口,下图为透明窗口。 注:窗口底色不能使用默认底色。