Thank, Anonymous Monk :) I finally figured it out. I actually had the notify=>1 option in my original script but it didn't work like expected (didn't change the background color of the label) so I removed it afterwards, thinking it was useless. Now I have the notify=>1 option and after several failed experiments, I now realize I have to add the -text => '' option in my script to make things really work.
Well, it's kind of weird that in order to change the background color of a label I have to add the quite irrelevant -text => '' option. But it does the trick
Here's the code that works for me. Please note the -text => '' option in the Change() function.:
use Win32::GUI();
use constant {
TME_HOVER => 1,
TME_LEAVE => 2,
HOVER_DEFAULT => 0xFFFFFFFF,
};
$state = 0;
$mw = Win32::GUI::Window->new(
-title => 'Test',
-pos => [170,100],
-size => [200,220],
);
$label = $mw->AddLabel(
-background => [0,0,255],
-pos => [ 70, 60 ],
-size => [50, 50 ],
-notify=>1,
-onMouseOver => sub {
$label->Change(-background => [255,0,0],-text=>'', );
return 0;
},
-onMouseOut => sub {
$label->Change(-background => [0,0,255],-text=>'', );
$state=0;
return 0;},
-onMouseMove => \&Move,
);
$mw->Show();
Win32::GUI::Dialog();
sub Move
{
return unless $state == 0;
$state = 1;
$label->TrackMouse(100,TME_HOVER|TME_LEAVE);
return 1;
}
And also thanks for the use constant suggestion :)
|