Scrollbars - Part 2 - Adding a large control

Take the scratch program from part 1, and we'll add a Label displaying a bitmap that is too large to fit in the window.

5 use Win32::GUI 1.05 qw( CW_USEDEFAULT WS_CLIPCHILDREN );

6

7 my $mw = Win32::GUI::Window->new(

8 -title => "Scrollbar 02: Scratch Program with picture",

9 -left => CW_USEDEFAULT,

10 -size => [ 400, 300 ],

11 -addstyle => WS_CLIPCHILDREN,

12 );

We add the style WS_CLIPCHILDREN to the window to prevent flickering caused by the erase of the window background followed by the re-draw of the bitmap when the window is re-sized. This is one of a number of flicker-reducing techniques that might make for a good series of articles in the future.

13

14 my $bm = Win32::GUI::Bitmap->new("kids.bmp");

15

16 $mw->AddLabel( -bitmap => $bm );

Adding a bitmap is as simple as creating a Win32::GUI::Bitmap object, passing the bitmap's filename to the constructor, and then passing the object to the AddLabel() method. A Label automatically sizes to the size of its bitmap if no other sizing options are supplied.

Again, here's the full code for this article:

#!perl -w

use strict;

use warnings;

use Win32::GUI 1.05 qw( CW_USEDEFAULT WS_CLIPCHILDREN );

my $mw = Win32::GUI::Window->new(

-title => "Scrollbar 02: Scratch Program with picture",

-left => CW_USEDEFAULT,

-size => [ 400, 300 ],

-addstyle => WS_CLIPCHILDREN,

);

my $bm = Win32::GUI::Bitmap->new("kids.bmp");

$mw->AddLabel( -bitmap => $bm );

$mw->Show();

Win32::GUI::Dialog();

$mw->Hide();

exit(0);

Source code can be downloaded from the series index page. Back to Part 1. Move on to Part 3.