Hi Rob,
 
if you use a Label with the "-notify => 0" option to display the bitmap it
should be possible to place other controls on top of it.
 
If you need to catch the events for the background bitmap your in trouble.
There seems to be a bug in the event handling for child-controls in
Win32::GUI. See also Bug Tracker 1588332.
 
Bye,
Uwe


Von: perl-win32-gui-users-bounces@lists.sourceforge.net [mailto:perl-win32-gui-users-bounces@lists.sourceforge.net] Im Auftrag von Perl Rob
Gesendet: Donnerstag, 21. Dezember 2006 15:03
An: Win32 GUI Users Mailing List
Betreff: [perl-win32-gui-users] Need help placing controls on top of graphics

Hi,
 
I'm attempting to place a scrollable text field on top of the background image of my window. Unfortunately, if I add the text field to the window first (i.e. before adding the graphic to the window), then the text field gets "swallowed up" by the graphic, and the only way to see the text field is to mouse over it or click it. If, on the other hand, I add the graphic first, (i.e. before adding the text field), then the text field is properly displayed but frozen--I can't click inside it or scroll it down.
 
I've been searching the Win32-GUI archives and reading the Win32-GUI documentation for several days to no avail, and I've concluded that I just don't understand how to work with graphics. Any advice/education/assistance would be greatly appreciated. Below is an example of my code thus far, which illustrates the "swallowing up" probem. If you move lines 34-49 to line 19, you can see the freezing problem.
 
#############################################
 #!c:\perl\bin\perl -w
 
use strict;
use Win32::GUI();
use Win32::GUI::DIBitmap();
 
my $DC;
 
my $main = Win32::GUI::Window->new(
     -name    => 'Main',
     -width    => 799,
     -height   => 577,
     -text    => 'Example... ',
         -resizable  => 0,
     -hasmaximize => 0,
     -dialogui  => 1,
     -topmost   => 1,
     );
 
my $license_agreement_field = $main->AddTextfield(
                            -readonly   => 1,
                            -multiline  => 1,
                            -name     => 'LicenseTextField',
                            -width    => 508,
                            -height    => 347,
                            -top     => 73,
                            -left     =>  15,
                            -background  => [255, 255, 255],
                            -vscroll   => 1,
                            );
 
my $license_agreement_text1 = $license_agreement_field->Append("License agreement goes here...");
 
$main->AddGraphic (
    -name => "Graphic",
    -pos  => [0, 0],
    -size => [$main->ScaleWidth,$main->ScaleHeight],
    -interactive => 1,
     );
 
my $background = newFromFile Win32::GUI::DIBitmap ('Menu_License_Background.gif');
 
sub Graphic_Paint {
    $DC = $main->Graphic->GetDC();
    if (defined $background) {
        $background->CopyToDC($DC);
    }
    $DC->Validate();
}
 
$main->Show();
Win32::GUI::Dialog();
#############################################
 
 
Thanks in advance,
Rob