相關API函式:
GetWindowLong:獲得有關指定視窗的資訊;
SetWindowLong:改變指定視窗的屬性;
SetLayeredWindowAttributes:設定分層視窗透明度。
DLL命令表:
1.
.版本 2
.DLL命令 GetWindowLong, 整數型, "user32.dll", "GetWindowLongA"
.引數 hwnd, 整數型
.引數 nlndex, 整數型
2.
.DLL命令 SetWindowLong, 整數型, , "SetWindowLongA"
.引數 nIndex, 整數型
.引數 dwNewLong, 整數型
3.
.DLL命令 SetLayeredWindowAttributes, 邏輯型, , "SetLayeredWindowAttributes"
.引數 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
透明方式一:視窗底色完全透明,控制元件完全不透明。原始碼如下。
.子程式 __啟動視窗_建立完畢
.區域性變數 rtn, 整數型
rtn = GetWindowLong (取視窗控制代碼 (), -20)
SetWindowLong (取視窗控制代碼 (), -20, 位或 (rtn, 524288))
SetLayeredWindowAttributes (取視窗控制代碼 (), 底色, 0, 1)
效果如下:上圖為正常視窗,下面為透明視窗。
注:視窗底色不能使用預設底色。
透明方式二:視窗半透明。原始碼如下。
SetLayeredWindowAttributes (取視窗控制代碼 (), 底色, 120, 2)
效果如下:上圖為正常視窗,下圖為透明視窗。
透明方式三:視窗底色完全透明,控制元件半透明。原始碼如下。
SetLayeredWindowAttributes (取視窗控制代碼 (), 底色, 120, 3)
相關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)
效果如下:上圖為正常視窗,下圖為透明視窗。
注:視窗底色不能使用預設底色。