#!perl -w
use strict;
use warnings;
use Win32::GUI();
# Get text to diaply from the command line
my $text = defined($ARGV[0]) ? $ARGV[0] : "Hello, world";
# Create our window
my $main = Win32::GUI::Window->new(
-name => 'Main',
-width => 100,
-height => 100,
-text => 'Perl',
);
# Create a font to diaply the text
my $font = Win32::GUI::Font->new(
-name => "Comic Sans MS",
-size => 24,
);
# Add the text to a label in the window
my $label = $main->AddLabel(
-text => $text,
-font => $font,
-foreground => 0x0000FF,
);
my $ncw = $main->Width() - $main->ScaleWidth();
my $nch = $main->Height() - $main->ScaleHeight();
my $w = $label->Width() + $ncw;
my $h = $label->Height() + $nch;
# Get the desktop window and its size:
my $desk = Win32::GUI::GetDesktopWindow();
my $dw = Win32::GUI::Width($desk);
my $dh = Win32::GUI::Height($desk);
# Calculate the top left corner position needed
# for our main window to be centered on the screen
my $x = ($dw - $w) / 2;
my $y = ($dh - $h) / 2;
# And move the main window to the center of the screen
$main->Move($x, $y);
# Resize the window to the size of the label
$main->Resize($w, $h);
# Set the minimum size of the window to the size of the label
$main->Change(
-minsize => [$w, $h],
);
# SHow the window and enter the dialog phase.
$main->Show();
Win32::GUI::Dialog();
exit(0);
# Terminate Event handler
sub Main_Terminate {
return -1;
}
# Resize Event handler
sub Main_Resize {
my $mw = $main->ScaleWidth();
my $mh = $main->ScaleHeight();
my $lw = $label->Width();
my $lh = $label->Height();
$label->Left(($mw - $lw) / 2);
$label->Top(($mh - $lh) / 2);
return 0;
}