> I am new to Win32::GUI.
> I would like to open a simple, plain, main window, with only label
> objects on it, let say, and intercept a mouse click anywhere on the
> client area, so
> that, depending on where the click happens
> (Win32::GUI::GetCursorPos()), different actions can be taken.
> It doesn't seem the mouse click event is handled by the main
> window. True?
> The only solution I can see up to now is to add an 'enormous' button
> that covers the entire area, let's call it BigBut
> , then add the labels and define a sub called BigBut_Click() which
> calls to Win32::GUI::GetCursorPos() and Win32::GUI::Redraw($main, 1).
>
> Has any one any idea on how to achieve this scope in a less
> clumsy way?
> Incidentally: what objects are clickable? More generally, how
> can I know
> which events are seen by which objects?
> Thanks in advance for any answer.
>
You're overthinking it. Here's one simple way: add a label that is the same
size as the window and make it respond to clicks via -notify=>1. Don't
forget to resize it if the window is resized.
-Pete
use Win32::GUI;
my $Window = new Win32::GUI::Window (
-title => "Now whole Window is a Label",
-pos => [100, 100],
-size => [400, 400],
-name => "Window",
);
my $Label = $Window->AddLabel(
-name => "Label",
-pos => [0,0],
-size => [400,400],
-text => "",
-notify => 1,
);
my $Label2 = $Window->AddLabel(
-name => "Label2",
-pos => [10,10],
-text => "This is the second label on top of the first",
);
$Window->Show();
Win32::GUI::Dialog();
sub Label_Click
{
print "Got a click\n";
}
sub Window_Terminate
{
return -1;
}