易語(yǔ)言通過(guò)API實(shí)現(xiàn)窗口透明效果
易語(yǔ)言是一種簡(jiǎn)單易學(xué)的編程語(yǔ)言,可以通過(guò)調(diào)用API函數(shù)來(lái)實(shí)現(xiàn)各種功能。在實(shí)現(xiàn)窗口透明效果方面,易語(yǔ)言提供了一個(gè)非常有用的函數(shù)SetLayeredWindowAttributes。這個(gè)函數(shù)可以實(shí)現(xiàn)三種不
易語(yǔ)言是一種簡(jiǎn)單易學(xué)的編程語(yǔ)言,可以通過(guò)調(diào)用API函數(shù)來(lái)實(shí)現(xiàn)各種功能。在實(shí)現(xiàn)窗口透明效果方面,易語(yǔ)言提供了一個(gè)非常有用的函數(shù)SetLayeredWindowAttributes。這個(gè)函數(shù)可以實(shí)現(xiàn)三種不同的窗口透明效果。
相關(guān)API函數(shù)
在使用SetLayeredWindowAttributes函數(shù)之前,我們需要了解一些相關(guān)的API函數(shù)。其中包括GetWindowLong、SetWindowLong和SetLayeredWindowAttributes。
- GetWindowLong:用于獲得指定窗口的信息。
- SetWindowLong:用于改變指定窗口的屬性。
- SetLayeredWindowAttributes:用于設(shè)置分層窗口的透明度。
SetLayeredWindowAttributes參數(shù)說(shuō)明
SetLayeredWindowAttributes函數(shù)有四個(gè)參數(shù):
1. hwnd:窗口句柄。
2. crKey:需要透明的顏色值。
3. bAlpha:透明度,取值范圍為0~255,其中0表示完全透明,255表示完全不透明。
4. dwFlags:透明方式。
參數(shù)dwFlags可以取以下三個(gè)值:
- LWA_ALPHA:參數(shù)crKey(顏色值)無(wú)效,參數(shù)bAlpha(透明度)有效。
- LWA_COLORKEY:窗體中所有顏色為crKey的地方完全透明,參數(shù)bAlpha(透明度)無(wú)效。
- LWA_ALPHA | LWA_COLORKEY:窗體中所有顏色為crKey的地方完全透明,其他地方根據(jù)參數(shù)bAlpha確定透明度。
透明方式一:窗口底色完全透明,控件完全不透明
下面是實(shí)現(xiàn)窗口底色完全透明,控件完全不透明的源代碼:
```e
.版本 2
子程序 __啟動(dòng)窗口_創(chuàng)建完畢
局部變量 rtn, 整數(shù)型
rtn GetWindowLong(取窗口句柄(), -20)
SetWindowLong(取窗口句柄(), -20, 位或(rtn, 524288))
SetLayeredWindowAttributes(取窗口句柄(), 底色, 0, 1)
```
效果如下:
上圖為正常窗口,下面為透明窗口。需要注意的是,窗口底色不能使用默認(rèn)底色。
透明方式二:窗口半透明
下面是實(shí)現(xiàn)窗口半透明的源代碼:
```e
.版本 2
子程序 __啟動(dòng)窗口_創(chuàng)建完畢
局部變量 rtn, 整數(shù)型
rtn GetWindowLong(取窗口句柄(), -20)
SetWindowLong(取窗口句柄(), -20, 位或(rtn, 524288))
SetLayeredWindowAttributes(取窗口句柄(), 底色, 120, 2)
```
效果如下:
上圖為正常窗口,下圖為透明窗口。需要注意的是,窗口底色不能使用默認(rèn)底色。
透明方式三:窗口底色完全透明,控件半透明
下面是實(shí)現(xiàn)窗口底色完全透明,控件半透明的源代碼:
```e
.版本 2
子程序 __啟動(dòng)窗口_創(chuàng)建完畢
局部變量 rtn, 整數(shù)型
rtn GetWindowLong(取窗口句柄(), -20)
SetWindowLong(取窗口句柄(), -20, 位或(rtn, 524288))
SetLayeredWindowAttributes(取窗口句柄(), 底色, 120, 3)
```
效果如下:
上圖為正常窗口,下圖為透明窗口。需要注意的是,窗口底色不能使用默認(rèn)底色。