找回密码
 加入
搜索
查看: 1728|回复: 1

[AU3基础] 能够 做到 控件半透明 但是 窗口不透明吗?? 范例只有全部透明!!

[复制链接]
发表于 2016-10-17 11:00:04 | 显示全部楼层 |阅读模式
能够 做到 控件半透明 但是 窗口不透明吗?? 范例只有全部透明!!

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>

Local $gui = GUICreate("WinAPI UDF 函数演示", 300, 400, -1, -1, -1, $WS_EX_LAYERED)
GUICtrlCreateLabel("这是一个透明分层 GUI 的文本", 10, 10, 200, 20, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetTip(-1, "按住标签拖动分层窗口")
Local $layButt = GUICtrlCreateButton("测试", 10, 40, 40)
GUISetBkColor(0xABCDEF)
_WinAPI_SetLayeredWindowAttributes($gui, 0x010101)
GUISetState()

Local $guicontrol = GUICreate("ControlGUI", 300, 400, 100, 100)
Local $checkTrans = GUICtrlCreateCheckbox("透明色 0xABCDEF (选中) 或 0x010101", 10, 10)
Local $checkBorder = GUICtrlCreateCheckbox("弹出样式", 10, 30)
GUICtrlCreateLabel("分层 GUI 界面的透明度", 10, 50)
Local $slidTrans = GUICtrlCreateSlider(10, 70, 200, 30)
GUICtrlSetLimit($slidTrans, 255, 0)
GUICtrlSetData(-1, 255)
GUISetState()

While 1
    Local $extMsg = GUIGetMsg(1)
    Local $msg = $extMsg[0]
    Switch $extMsg[1]
        Case $guicontrol
            Select
                Case $msg = $GUI_EVENT_CLOSE
                    Exit
                Case $msg = $checkTrans Or $msg = $slidTrans

                    ; 更改跨窗口颜色和透明度的属性

                    If BitAND(GUICtrlRead($checkTrans), $GUI_CHECKED) = $GUI_CHECKED Then
                        _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($slidTrans))
                    Else
                        _WinAPI_SetLayeredWindowAttributes($gui, 0x010101, GUICtrlRead($slidTrans))
                    EndIf

                Case $msg = $checkBorder
                    If BitAND(GUICtrlRead($checkBorder), $GUI_CHECKED) = $GUI_CHECKED Then
                        GUISetStyle($WS_POPUP, -1, $gui)
                    Else
                        GUISetStyle($GUI_SS_DEFAULT_GUI, -1, $gui)
                    EndIf
            EndSelect
        Case $gui
            Select
                Case $msg = $layButt
                    Local $transcolor, $alpha
                    Local $info = _WinAPI_GetLayeredWindowAttributes($gui, $transcolor, $alpha)
                    MsgBox(0, '分层 GUI', "分层窗口按钮点击" & @CRLF & "此窗口信息: " & @CRLF & _
                            "透明颜色: " & $transcolor & @CRLF & _
                            "Alpha 值: " & $alpha & @CRLF & _
                            "LWA_COLORKEY: " & (BitAND($info, $LWA_COLORKEY) = $LWA_COLORKEY) & @CRLF & _
                            "LWA_ALPHA: " & (BitAND($info, $LWA_ALPHA) = $LWA_ALPHA))
                Case $msg = $GUI_EVENT_CLOSE
                    Exit MsgBox(0, '', "关闭分层界面")
            EndSelect
    EndSwitch
WEnd


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-10-17 19:44:16 | 显示全部楼层
哇 写个窗体代码那么长   进来学习下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-25 22:16 , Processed in 0.075264 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表