The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! perl -w
#
# This samples show how use Animation control (You can only open silent AVI clips).
#
use strict;
use Win32::GUI();

# Create your main window
my $Window = new Win32::GUI::Window(
    -name   => "Window",                    # Window name (important for OEM event)
    -title  => "Win32::GUI::Animation",     # Title window
    -pos    => [100,100],                   # Default position
    -size   => [400,400],                   # Default size
    -dialogui => 1,                         # Enable keyboard navigation like DialogBox
);

# Add an Animation control.
my $Animation = $Window->AddAnimation (
    -name     => "Animation",
    -pos      => [5,35],
    -size     => [390,350],
    -autoplay => 0,                        # Don't want autoplay
    -center   => 1,                        # Center video in control
    -transparent => 1,                     # background is transparent.
    -tabstop  => 0,
    -onStart  => sub { print "Start playing !!!\n" },
    -onStop   => sub { print "Stop  playing !!!\n" },
);

# Add a load button.
$Window->AddButton (
    -name    => "Load",
    -pos     => [5,5],
    -text    => "&Load...",
    -default => 1,
    -tabstop => 1,
    -group   => 1,                        # You can use :
#    -onClick => \&LoadAviFile,            #  a reference sub
    -onClick  => 'LoadAviFile',           #  a string name sub
);

# Add a start button.
$Window->AddButton (
    -name    => "Start",
    -pos     => [65,5],
    -text    => "&Start",
    -tabstop => 1,
    -onClick => sub { $Animation->Play(); },
);

# Add a stop button.
$Window->AddButton (
    -name    => "Stop",
    -pos     => [115,5],
    -text    => "&Stop",
    -tabstop => 1,
    -onClick => sub { $Animation->Stop(); },
);

# Show Main Window
$Window->Show();
# Go to event message loooooop....
Win32::GUI::Dialog();

#===========================================================
# Load Button event
#===========================================================

sub LoadAviFile {

  # Stop and close if any playing
  $Animation->Close();

  # Use GetOpenFile for search a avi file
  my $file = Win32::GUI::GetOpenFileName(
                   -owner  => $Window,                    # Main window for modal dialog
                   -title  => "Open a avi file",          # Dialog title
                   -filter => [                           # Filter file
                       'Animation file (*.avi)' => '*.avi',
                       'All files' => '*.*',
                    ],
                   -directory => ".",                     # Use current directory
                   );

  # Have select a file ?
  if ($file) {
     # Load file to animation control
     $Animation->Open($file);
  }
  # Or an error messagebox with error.
  elsif (Win32::GUI::CommDlgExtendedError()) {
     Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(),
                            "GetOpenFileName Error");
  }
}