Jump to content

$WS_EX_LAYERED


Recommended Posts

Sigh these Animate Window Effects are GREAT but they don't work with $WS_EX_LAYERED which really makes it hard to make a nice GUI :)

This is not all how can you have a nice graphical GUI if you can't skin combo's/inputs/checkbox .etc (buttons are do able by using pictures.)

$hwnd = GUICreate ( "Blend test", 300, 300 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000 )
GUISetState ( )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040001 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040002 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040004 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040008 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040005 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040006 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040009 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x0004000a )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040010 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050010 )
Link to comment
Share on other sites

Sigh these Animate Window Effects are GREAT but they don't work with $WS_EX_LAYERED which really makes it hard to make a nice GUI :)

This is not all how can you have a nice graphical GUI if you can't skin combo's/inputs/checkbox .etc (buttons are do able by using pictures.)

$hwnd = GUICreate ( "Blend test", 300, 300 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000 )
GUISetState ( )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040001 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040002 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040004 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040008 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040005 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040006 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040009 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x0004000a )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040010 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050010 )

This works on XP.

;
#include <WindowsConstants.au3>
$hwnd = GUICreate("Blend test", 300, 300 ,- 1, -1, -1, $WS_EX_LAYERED)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000)
GUISetState()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040001)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040002)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000)
;

It might be best if you posted a small example script that demonstrates the problem. Unless it is an operating system thing.

Link to comment
Share on other sites

This works on XP.

;
#include <WindowsConstants.au3>
$hwnd = GUICreate("Blend test", 300, 300 ,- 1, -1, -1, $WS_EX_LAYERED)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000)
GUISetState()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040001)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040002)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000)
;

It might be best if you posted a small example script that demonstrates the problem. Unless it is an operating system thing.

#include <WindowsConstants.au3>
$hwnd = GUICreate("Blend test", 300, 300 ,- 1, -1, $WS_POPUP, $WS_EX_LAYERED)
GUICtrlCreatePic("1.bmp" , 0 , 0 , 300 , 300)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000)
GUISetState()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040001)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040002)
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1, "long", 0x00090000)

I got a picture that is transparent in the purple parts but it shows the purple parts everytime it animates.

Link to comment
Share on other sites

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
 Share

  • Recently Browsing   0 members

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