Hi,
I'm not sure what you example code actually does:)? If I comment out all the 
code for SetLayeredWindowAttributes there is no change to the window? 
You'll probably want to set the background of the button to the same color as 
the window as any app with windows XP styles set will use rounded buttons.
To answer your questions, you shouldn't have any issue displaying bitmaps with 
transparancy, it's just a case of converting it to the correct object (I use 
icon's with 24 or 32 bit color). In most cases WS_CLIPCHILDREN will remove 
flicker on resize, but there is also a -noflicker option that works in some 
cases (it uses double buffering). Flicker free child windows with scroll bars 
are no problem as WS_CLIPCHILDREN will solve the flicker issue.   
Regards,
jez.
Date: Tue, 19 Oct 2010 23:44:55 -0600
From: rob.johan...@gmail.com
To: perl-win32-gui-users@lists.sourceforge.net
Subject: [perl-win32-gui-users] Robust Windows








Hi all,



I'm trying to come up with the best approach for creating aesthetically
pleasing windows that:



- Have labels whose bitmap has transparency (.png files loaded by
DIBitmap)

- Don't exhibit any flicker

- Are layered windows (this seems to improve quality during
animation/transparency)

- Support child windows that can be scrolled and don't flicker



Below is the code I've come up with so far (without bitmap labels). Is
there anything else I should consider? Could I be doing something
better?





########## CODE BEGIN



use strict;

use Win32::GUI qw(WS_CLIPCHILDREN);

use Win32::API;



use constant WS_EX_LAYERED => 0x00080000;

use constant LWA_COLORKEY  => 0x00000001;

use constant LWA_ALPHA     => 0x00000002;

use constant GWL_EXSTYLE   => -20;



my $main = Win32::GUI::Window->new

(

    -background => [153,0,0],

    -pushstyle => WS_CLIPCHILDREN,

    -text      => 'Test',

    -size      => [500,500],

);



my $setLayeredWindowAttributes = Win32::API->new('user32',
'SetLayeredWindowAttributes', 'LLIN', 'I');

my $winstyle = $main->GetWindowLong(GWL_EXSTYLE);

$winstyle = $winstyle | WS_EX_LAYERED;

$main->SetWindowLong(GWL_EXSTYLE, $winstyle || WS_EX_LAYERED);

$setLayeredWindowAttributes->Call($main->{-handle}, 0, 255,
LWA_ALPHA);



my $OK = $main->AddButton

(

    -name => 'OK',

    -text => 'OK',

    -size => [80,25],

    -pos  => [10,10],

);



$main->Center();

$main->Show();

Win32::GUI::Dialog();



########## CODE
END





Thanks,

Rob




------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/                                    
------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/

Reply via email to