#!perl -w use strict; use warnings; die "This sample crashes perl when calling FreeImage_LockPage"; $|=1; #autoflush # # Test with Win32::GUI and Multi-Page system # # Functions Test : # - newFromFile # - AppendPage # - GetPageCount # - LockPage # - UnlockPage # - GetLockedPageNumbers use FindBin(); use Win32::GUI qw(WS_CLIPCHILDREN); use Win32::GUI::DIBitmap; # Create a MDIB bitmap my $mdib = new Win32::GUI::MDIBitmap ("mdib.tiff", FIF_TIFF,) or die "new"; for my $i (1..5) { my $dib = newFromFile Win32::GUI::DIBitmap ("$FindBin::Bin/$i.bmp") or die "Failed reading $i.bmp"; $mdib->AppendPage ($dib); } #undef $mdib; # Load a MDIB bitmap #$mdib = newFromFile Win32::GUI::MDIBitmap ("mdib.tiff") or die "newFromFile"; print "Number of pages :", $mdib->GetPageCount(), "\n"; my $i = 0; my $W = new Win32::GUI::Window ( -title => "Win32::GUI::DIBitmap test", -left => 100, -top => 100, -width => 400, -height => 400, -name => "Window", -pushstyle => WS_CLIPCHILDREN, ) or die "new Window"; my ($width, $height) = ($W->GetClientRect)[2..3]; $W->AddButton ( -name => "Button", -text => "Next", -pos => [0 , 0], ); $W->Show(); Win32::GUI::Dialog(); exit(0); sub Button_Click { $i = $i + 1; $i = 0 if ($i >= $mdib->GetPageCount()); print "Current page :", $i, "\n"; $W->InvalidateRect(0); } sub Window_Paint { my $dc = shift; my ($width, $height) = ($W->GetClientRect)[2..3]; print "Locking page $i\n"; my $dib = $mdib->LockPage($i); print "Locked\n"; #print $mdib->GetLockedPageNumbers(), "\n"; #$dib->AlphaCopyToDC($dc, 50, 50); #$dib->CopyToDC($dc, 50, 50); #$dib->SaveToFile ("test.bmp"); print "UnLocking\n"; $mdib->UnlockPage($dib); print "UnLocked\n"; $dc->Validate(); return 1; }