Eric;

I have always treated fonts like menus. Both must be defined before the main
window is defined.  Using this method I have never had any out of scope
errors.



Roode, Eric wrote:
> 
> I just spent the past few hours debugging this.  I have narrowed down
> the problem to the scope of the font object.
> 
> Here are two simple, complete test programs.
> 
> ======== example 1
> use Win32::GUI;
> 
> my $main = Win32::GUI::Window->new
>     (
>      -name   => 'Main',
>      -width  => 350,
>      -height => 250,
>      -left   => 300,
>      -top    => 200,
>      -text   => 'Font test',
>     );
> 
> initialize_heading($main);
> 
> $main->Show();
> Win32::GUI::Dialog();
> 
> sub Main_Terminate { -1 }
> 
> sub initialize_heading
> {
>     my $win = shift;
> 
>     my $font = Win32::GUI::Font->new
>         (
>          -name   => 'Arial',
>          -size   => 14,
>          -italic => 1,
>         );
> 
>     $win->AddLabel(-name => 'heading', -text => "Font test",
>                     -width => 150, -height => 30,
>                     -font => $font);
> }
> ======== end example 1
> 
> ======== example 2
> use Win32::GUI;
> 
> my $main = Win32::GUI::Window->new
>     (
>      -name   => 'Main',
>      -width  => 350,
>      -height => 250,
>      -left   => 300,
>      -top    => 200,
>      -text   => 'Font test',
>     );
> 
> my $font = Win32::GUI::Font->new
>     (
>      -name   => 'Arial',
>      -size   => 14,
>      -italic => 1,
>     );
> 
> 
> initialize_heading($main);
> 
> $main->Show();
> Win32::GUI::Dialog();
> 
> sub Main_Terminate { -1 }
> 
> sub initialize_heading
> {
>     my $win = shift;
> 
>     $win->AddLabel(-name => 'heading', -text => "Font test",
>                     -width => 150, -height => 30,
>                     -font => $font);
> }
> ======== end example 2
> 
> These two examples are very similar.  The only difference is the
> location of the "my $font" line.  The first example localizes the
> variable to the initialize_heading subroutine.  This does not work!
> When the window is displayed, the label is drawn with the wrong font.
> 
> The second example makes the font variable global to the file scope.
> This example works: the label is drawn with the correct font.
> 
> Why on earth would the font variable need to be global?  How the heck is
> anyone supposed to know this?  I would have assumed that the hash of
> parameters to any control would have been copied into the control
> object, and thus still have a nonzero reference count.  Apparently
> that's not the case.  Is it ever safe to undefine or redefine a font
> variable, or let it go out of scope?  Is this documented anywhere?
> 
> More importantly: Are there any other things that I don't know about
> that are going to bite me if they go out of scope?
> 
> I am trying to make my initialization and setup code modular, so it can
> actually be maintained, instead of one big glomp of spaghetti.  This
> sort of behavior does not help.
> 
> Eric
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the
> world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> 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/
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Font-must-remain-in-scope---tp18618223p18624556.html
Sent from the perl-win32-gui-users mailing list archive at Nabble.com.


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
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/

Reply via email to