Dude, Those ROCK!!!!   Thanks for taking the time to play with and come up with 
these.  Maybe they will get into the next version.   Keep sending new ones when 
you find them.
 

Joe Frazier, Jr. 
Technical Support Engineer 
Peopleclick Service Support 

Tel:  +1-800-841-2365 
E-Mail: mailto:[EMAIL PROTECTED] 

-----Original Message-----
From: Luigino Masarati [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 03, 2002 8:18 AM
To: perl-win32-gui-users@lists.sourceforge.net
Subject: [perl-win32-gui-users] Animated windows



Hi,
    I searched in this mailing list how to create animated windows like start 
menu in W2K/XP (see Win32 SDK - Layered Windows 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/animatewindow.asp)
 and found nothing about it, so i searched on MSDN and found the API code and 
tried until i got it.
 
Note that this functionality is fully supported by Windows 98/2000/XP only.
 
Here is the code, hope it will be useful to someone else...
 
#-----------------------------
# use Win32::GUI etc... 
 
use Win32;
use Win32::API;
 
use constant AW_HOR_POSITIVE => 0x00000001;
use constant AW_HOR_NEGATIVE => 0x00000002;
use constant AW_VER_POSITIVE => 0x00000004;
use constant AW_VER_NEGATIVE => 0x00000008;
use constant AW_CENTER       => 0x00000010;
use constant AW_HIDE         => 0x00010000;
use constant AW_ACTIVATE     => 0x00020000;
use constant AW_SLIDE        => 0x00040000;
use constant AW_BLEND        => 0x00080000;
 
# BOOL AnimateWindow(
# HWND hwnd,
# DWORD dwTime,
# DWORD dwFlags
# );
my $AnimateWindow = new Win32::API("user32", "AnimateWindow", [ 'N', 'N', 'N' 
], 'N') or $reg{'UI'}{'Fading'} = 0;
 
# ... here create your window object ($winObj) as ususal...
 
# set animation duration in ms (usually 200ms)
my $msec = 200;
 
# FADE IN
# use this command in place of $objWin->Show()
$AnimateWindow->Call($winObj->{-handle}, $msec, AW_ACTIVATE | AW_BLEND );
 
# FADE OUT
# use this command in place of $objWin->Hide() for example in winObj_Terminate()
$AnimateWindow->Call($winObj->{-handle}, $msec, AW_HIDE | AW_BLEND );
 


# Some alternatives follows...
 
# APPEAR from LEFT-TOP
# use this command in place of $objWin->Show()
# $AnimateWindow->Call($winObj->{-handle}, $msec, AW_ACTIVATE | AW_SLIDE | 
AW_HOR_POSITIVE | AW_VER_POSITIVE );
 
# DISAPPEAR from RIGHT-BOTTOM
# use this command in place of $objWin->Hide() for example in winObj_Terminate()
# $AnimateWindow->Call($winObj->{-handle}, $msec, AW_HIDE | AW_SLIDE | 
AW_HOR_NEGATIVE | AW_VER_NEGATIVE );
 
# GROW from CENTER
# use this command in place of $objWin->Show()
# $AnimateWindow->Call($winObj->{-handle}, $msec, AW_ACTIVATE | AW_CENTER );
 
# SHRINK to CENTER
# use this command in place of $objWin->Hide() for example in winObj_Terminate()
# $AnimateWindow->Call($winObj->{-handle}, $msec, AW_HIDE | AW_CENTER );
 
#-----------------------------
 
Bye.
 
    Luigino Masarati
    OutSys snc.
 

Reply via email to