Jump to content

Recommended Posts

Posted (edited)

#include <Constants.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include<StaticConstants.au3>

Opt("GUIOnEventMode", 1)

Global $hMain, $iW = 800, $iH = 800, $msg, $ColourSlider, $Mx, $My, $Col1, $Trans1

; Create Slider GUI
$hGUI1 = GUICreate("SliderGUI", 217, 126, 86, 793)
$iSlider1 = GUICtrlCreateSlider(6, 74, 201, 21)
$TransLabel = GUICtrlCreateLabel("Adjust Transparency", 66, 62, 101, 17)
$Clickthru = GUICtrlCreateCheckbox("Clickthru", 10, 108, 13, 13)
;GUICtrlSetState(-1, 1)
$Tog_label = GUICtrlCreateLabel("Toggle Clck Through", 30, 108, 104, 17)
GUICtrlSetLimit($iSlider1, 254, 1)
GUICtrlSetData ($iSlider1, 150)
GUICtrlSetOnEvent($Clickthru, "SystemEvents")

$ColourSlider = GUICtrlCreateSlider(4, 19, 201, 21)
$ColourLabel = GUICtrlCreateLabel("Adjust Colour", 79, 4, 66, 17)
GUICtrlSetLimit($ColourSlider, 254, 1)
GUICtrlSetData ($ColourSlider, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "SystemEvents")
GUISetState(@SW_SHOW)

;Create Transparent GUI
$hMain = GUICreate("", $iW ,$iH,  -1, -1,   BitOR($WS_POPUP,$WS_BORDER,$WS_SIZEBOX),$WS_EX_TOPMOST)
 GUISetBkColor(0x00)            ;Set GUI Colour

GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "SystemEvents")
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "SystemEvents")

GUISetState(@SW_SHOW)
WinSetTrans($hMain, "", 150)

; toggle Transparency
While 1
    sleep(50)
    $Trans = GUICtrlRead($iSlider1)
    $Col = GUICtrlRead($ColourSlider)
    $Colour = ($Col * 256 * 256) + ($Col * 256) + ($Col)
    If $Col <> $Col1 then               ;Only update window if slider value changes
        GUISetBkColor($Colour)          ;Set GUI Colour
        $Col = $Col1
    Endif

    If $Trans <> $Trans1 Then
        WinSetTrans($hMain, "", $Trans)
        $Trans = $Trans1
    Endif
WEnd

Func SystemEvents()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Clickthru
            If BitAND(GUICtrlRead($Clickthru), $GUI_CHECKED) Then
                _WinAPI_SetWindowLong($hMain, $GWL_EXSTYLE, BitOR(_WinAPI_GetWindowLong($hMain, $GWL_EXSTYLE), $WS_EX_TRANSPARENT))
            Else
                $NoTrans = BitNOT($WS_EX_TRANSPARENT)
                _WinAPI_SetWindowLong($hMain, $GWL_EXSTYLE, BitAND(_WinAPI_GetWindowLong($hMain, $GWL_EXSTYLE), $NoTrans))
            EndIf
        Case $GUI_EVENT_PRIMARYDOWN
            Drag($hMain)
        Case $GUI_EVENT_PRIMARYUP
            ;
        Case $GUI_EVENT_SECONDARYDOWN
            ;
    EndSwitch
EndFunc

;by Zedna
Func Drag($h)
;~  dllcall("user32.dll","int","ReleaseCapture")
    DllCall("user32.dll","int","SendMessage","hWnd", $h,"int",$WM_NCLBUTTONDOWN,"int", $HTCAPTION,"int", 0)
EndFunc

Edited by Lakes

2015 - Still no flying cars, instead blankets with sleeves.

Posted

It's not a good idea to set stuff like that, use the events:

#include <Constants.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

Opt("GUIOnEventMode", 1)

Global $hMain, $iW = 800, $iH = 800, $msg, $ColourSlider, $Mx, $My

; Create Slider GUI
$hGUI1 = GUICreate("SliderGUI", 217, 126, 86, 793)
$iSlider1 = GUICtrlCreateSlider(6, 74, 201, 21)
$TransLabel = GUICtrlCreateLabel("Adjust Transparency", 66, 62, 101, 17)
$Clickthru = GUICtrlCreateCheckbox("Clickthru", 10, 108, 13, 13)
$Tog_label = GUICtrlCreateLabel("Toggle Clck Through", 30, 108, 104, 17)
GUICtrlSetLimit($iSlider1, 254, 1)
GUICtrlSetData($iSlider1, 150)
GUICtrlSetOnEvent($iSlider1, "SystemEvents")
GUICtrlSetOnEvent($Clickthru, "SystemEvents")

$ColourSlider = GUICtrlCreateSlider(4, 19, 201, 21)
$ColourLabel = GUICtrlCreateLabel("Adjust Colour", 79, 4, 66, 17)
GUICtrlSetLimit($ColourSlider, 254, 1)
GUICtrlSetData($ColourSlider, 150)
GUISetOnEvent($GUI_EVENT_CLOSE, "SystemEvents")
GUICtrlSetOnEvent($ColourSlider, "SystemEvents")
GUISetState(@SW_SHOW)

;Create Transparent GUI
$hMain = GUICreate("", $iW, $iH, -1, -1, BitOR($WS_POPUP, $WS_BORDER, $WS_SIZEBOX), BitOR($WS_EX_TOPMOST, $WS_EX_CONTROLPARENT))
GUISetBkColor(0x00) ;Set GUI Colour

GUISetState(@SW_SHOW)
WinSetTrans($hMain, "", 150)

While 1
    Sleep(10)
WEnd

Func SystemEvents()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Clickthru
            If BitAND(GUICtrlRead($Clickthru), $GUI_CHECKED) Then
                _WinAPI_SetWindowLong($hMain, $GWL_EXSTYLE, BitOR(_WinAPI_GetWindowLong($hMain, $GWL_EXSTYLE), $WS_EX_TRANSPARENT))
            Else
                $NoTrans = BitNOT($WS_EX_TRANSPARENT)
                _WinAPI_SetWindowLong($hMain, $GWL_EXSTYLE, BitAND(_WinAPI_GetWindowLong($hMain, $GWL_EXSTYLE), $NoTrans))
            EndIf
        Case $iSlider1
            $Trans = GUICtrlRead($iSlider1)
            WinSetTrans($hMain, "", $Trans)
        Case $ColourSlider
            $Col = GUICtrlRead($ColourSlider)
            $Colour = ($Col * 256 * 256) + ($Col * 256) + ($Col)
            GUISetBkColor($Colour) ;Set GUI Colour
    EndSwitch
EndFunc

 

  Reveal hidden contents

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Posted (edited)

Lost the window sizing and the window only updates after you release the mouse button.

EDIT: Updated script in first post.

Edited by Lakes

2015 - Still no flying cars, instead blankets with sleeves.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...