Ken,
Instead of using -pushstyle, you need to use -popstyle. As for the constants
needed, you will need to use WS_CAPTION to remove the title bar and
WS_THICKFRAME to remove the window's sizing border. Here is an example:
$splash = Win32::GUI::Window->new(
-name => 'splash',
-size => [200,200],
-popstyle => WS_CAPTION | WS_THICKFRAME,
);
__END__
There are a number of other window constants that can be used when creating a
splash window. If you have the Windows SDK, you can check the documentation for
a full list.
Hope this helps,
Kevin.
Date: Fri, 5 Mar 2010 14:44:24 -0500
From: kl...@psu.edu
To: perl-win32-gui-users@lists.sourceforge.net
Subject: [perl-win32-gui-users] Borderless Main Window
Hello,
Let me preface my question by saying that I haven’t used Win32::GUI very much,
so I might be missing something obvious.
I want to create a borderless window (splash screen) and have done so using the
–style option when creating the new window.
Unfortunately, this option is deprecated, and I get a message informing me of
that fact whenever I run the application.
Looking at the documentation, it appeared that I could use the –pushstyle of
–addstyle option when creating the window. However, the window has a border
when either of these options is used.
Can anyone point out the error of my ways? Actual code is below.
Thanks, Ken Slater
use strict;
use warnings;
use File::Basename;
use Getopt::Long;
use Win32::API;
use Win32::GUI();
use Win32::GUI::Constants;
use Win32::OLE('in');
my ( $runDir );
BEGIN
{
$runDir = Win32::GetFullPathName(dirname($0));
}
my ($help, %options, %overridingOptions);
$options{iniFile} = "$runDir/stayOnTop.ini";
my ($execname) = fileparse( "$0", '' );
sub usage
{
print STDERR <<USAGE;
$execname ...
USAGE
return 0;
} # end sub usage
GetOptions( "ini=s" => \$options{iniFile},
"bg=s" => \$overridingOptions{backgroundFile},
"t=i" => \$overridingOptions{timeout},
"h!" => \$help,
"help!" => \$help);
if ( $help )
{
usage;
exit 0;
}
pullSettings();
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
#------------------------------------------------------------
# Get height and width of display
#------------------------------------------------------------
my $computer = ".";
my $objWMIService = Win32::OLE->GetObject
("winmgmts:\\\\$computer\\root\\CIMV2")
or die "WMI connection failed.\n";
my $colItems = $objWMIService->ExecQuery
("SELECT * FROM Win32_VideoController","WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);
my ( $screenWidth, $screenHeight );
foreach my $objItem (in $colItems)
{
$screenWidth = $objItem->{CurrentHorizontalResolution};
$screenHeight = $objItem->{CurrentVerticalResolution};
}
#------------------------------------------------------------
# Create GUI Window
#------------------------------------------------------------
my $WS_POPUP = Win32::GUI::Constants::constant('WS_POPUP');
my $mw = Win32::GUI::Window->new(
-title => 'NOBORDER (I hope)',
-bg => 'black',
-pos => [0,0],
-size => [$screenWidth,$screenHeight],
# The -stype option was added to make borderless
# windows. Get a warning that this option is deprecated.
-style => $WS_POPUP,
#
# Neither addstyle or pushstyle seem to get rid of the border
#-addstyle => $WS_POPUP,
#-pushstyle => $WS_POPUP,
);
#------------------------------------------------------------
# Force this window to stay on top of other windows.
#------------------------------------------------------------
my $HWND_TOPMOST = Win32::GUI::Constants::constant('HWND_TOPMOST');
my $SWP_NOSIZE = Win32::GUI::Constants::constant('SWP_NOSIZE');
my $SWP_NOMOVE = Win32::GUI::Constants::constant('SWP_NOMOVE');
$mw->SetWindowPos($HWND_TOPMOST,0,0,$screenWidth,$screenHeight,
$SWP_NOSIZE|$SWP_NOMOVE);
#------------------------------------------------------------
# Set the timer to exit this application after the specified
# number of milliseconds.
#------------------------------------------------------------
$options{timeout} = 5000 unless defined($options{timeout});
my $t1 = $mw->AddTimer('T1', $options{timeout});
#------------------------------------------------------------
# Set up the image to be displayed on the screen
#------------------------------------------------------------
my $bitmap = Win32::GUI::Bitmap->new($options{backgroundFile},
0,$screenWidth,$screenHeight);
#create a label in which the bitmap will be placed
my $bitmapLabel = $mw->AddLabel(
-name => "Bitmap",
-left => 0,
-top => 0,
-width => $screenWidth,
-height => $screenHeight,
-bitmap => $bitmap,
);
#------------------------------------------------------------
# Display the window
#------------------------------------------------------------
$mw->Show();
Win32::GUI::Dialog();
#------------------------------------------------------------
# Subroutine called when timer expires
#------------------------------------------------------------
sub T1_Timer
{
exit;
}
sub pullSettings
{
local $/ = undef;
open my $INIFH, '<', $options{iniFile} or do
{
Win32::MsgBox("FATAL: Unable to open $options{iniFile}: $^E",
0, "StayOnTop.pl");
exit;
};
my $lines = <$INIFH>;
close $INIFH;
my $re = qr{<([^/][^>]+)>\s*([^<]+)};
%options = $lines =~ /$re/gs;
foreach my $key ( keys %options )
{
$options{$key} = $overridingOptions{$key}
if defined($overridingOptions{$key});
}
}
_________________________________________________________________
Link all your email accounts and social updates with Hotmail. Find out now.
http://windowslive.ninemsn.com.au/oneinbox?ocid=T162MSN05A0710G
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
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/