<?xml version="1.0" encoding="windows-1252"?>
<node id="795142" title="Wx::MediaCtrl and Wx::PaintDC" created="2009-09-14 10:20:50" updated="2009-09-14 10:20:50">
<type id="1748">
sourcecode</type>
<author id="741225">
Steve_BZ</author>
<data>
<field name="doctext">
&lt;code&gt;

#!/usr/bin/perl -w -- 

use Wx 0.15 qw[:allclasses];
use strict;

package MyFrame;

use Wx qw[:everything];
use base qw(Wx::Frame);
use strict;

sub new {
	my( $self, $parent, $id, $title, $pos, $size, $style, $name ) = @_;
	$parent = undef              unless defined $parent;
	$id     = -1                 unless defined $id;
	$title  = ""                 unless defined $title;
	$pos    = wxDefaultPosition  unless defined $pos;
	$size   = wxDefaultSize      unless defined $size;
	$name   = ""                 unless defined $name;

	$style = wxDEFAULT_FRAME_STYLE 
		unless defined $style;

	$self = $self-&gt;SUPER::new( $parent, $id, $title, $pos, $size, $style, $name );
	$self-&gt;SetTitle("Draw/Video Controls");
	
	$self-&gt;{Ctl_Videos_Sizer_2} = Wx::BoxSizer-&gt;new(wxVERTICAL);		# Top-level left-hand sizer (contains media)

# wxMEDIABACKEND_DIRECTSHOW 	Use ActiveMovie/DirectShow. Requires wxUSE_DIRECTSHOW to be enabled, requires linkage with the static library strmiids.lib, and is available on Windows Only.
# wxMEDIABACKEND_QUICKTIME 	Use QuickTime. Windows and Mac Only. NOTE: On Mac Systems lower than OSX 10.2 this defaults to emulating window positioning and suffers from several bugs, including not working correctly embedded in a wxNotebook.
# wxMEDIABACKEND_MCI 		Use Media Command Interface. Windows Only.
# wxMEDIABACKEND_GSTREAMER	Use GStreamer. Unix Only. 
# wxMEDIABACKEND_WMP10		Windows Media Player 9 or 10
# wxMEDIABACKEND_REALPLAYER	Realplayer
# Blank 			Allow to choose own player

	$self-&gt;{Ctl_Videos_Media}= Wx::MediaCtrl-&gt;new( $self, wxID_ANY, '', wxDefaultPosition, [400,300],0,  );
	$self-&gt;{Ctl_Videos_Media}-&gt;Show( 1 );
	$self-&gt;{Ctl_Videos_Media}-&gt;ShowPlayerControls(wxMEDIACTRLPLAYERCONTROLS_DEFAULT);
								# or wxMEDIACTRLPLAYERCONTROLS_NONE
								# wxMEDIACTRLPLAYERCONTROLS_STEP
								# wxMEDIACTRLPLAYERCONTROLS_VOLUME
								# wxMEDIACTRLPLAYERCONTROLS_DEFAULT

	$self-&gt;{Ctl_Videos_Sizer_2}-&gt;Add( $self-&gt;{Ctl_Videos_Media}, 0, 0, 0  );
	$self-&gt;{Ctl_Videos_ImageViewer_Panel_1} = Wx::Panel-&gt;new($self, wxID_ANY, wxDefaultPosition, [400,20], );
	$self-&gt;{Ctl_Videos_Sizer_2}-&gt;Add($self-&gt;{Ctl_Videos_ImageViewer_Panel_1}, 0, 0, 0);
	$self-&gt;{Ctl_Videos_Button} = Wx::Button-&gt;new($self, wxID_ANY, "Load", );
	$self-&gt;{Ctl_Videos_Sizer_2}-&gt;Add($self-&gt;{Ctl_Videos_Button}, 0, 0, 0);


	Wx::Event::EVT_PAINT($self-&gt;{Ctl_Videos_ImageViewer_Panel_1},\&amp;paint);
	Wx::Event::EVT_BUTTON( $self, $self-&gt;{Ctl_Videos_Button}, \&amp;on_media_load );

	$self-&gt;SetSizer($self-&gt;{Ctl_Videos_Sizer_2});
	$self-&gt;{Ctl_Videos_Sizer_2}-&gt;Fit($self);
	$self-&gt;Layout();

	return $self;
}
sub on_media_load {
#
#	Load file button selected
#
    my( $self, $event ) = @_;

    my $file = Wx::FileSelector('Choose a media file');	# Select video file
    if( length( $file ) ) {
        $self-&gt;{Ctl_Videos_Media}-&gt;LoadFile ($file);		# Load video file
	$self-&gt;{mediafile}= $file;			# Store location of video file in '$self
#	$self-&gt;{Ctl_Videos_Media}-&gt;Play();

    }
}
sub paint{
	my ($self,$event) = @_;
	my $dc = Wx::PaintDC-&gt;new($self);
	$dc-&gt;DrawRectangle( 0,0, 400,20 );
	$event-&gt;Skip;
}
package main;

unless(caller){
	local *Wx::App::OnInit = sub{1};
	my $app = Wx::App-&gt;new();
	Wx::InitAllImageHandlers();

	my $frame_1 = MyFrame-&gt;new();

	$app-&gt;SetTopWindow($frame_1);
	$frame_1-&gt;Show(1);
	$app-&gt;MainLoop();
}
&lt;/code&gt;</field>
<field name="codedescription">
When I was starting to use wxPerl, I couldn't find enough examples of this control.  So here is a small example here of wxMediaCtrl, and the beginning of a Bitmap Status bar underneath using DC::Paint.</field>
<field name="codecategory">
wxPerl</field>
<field name="codeauthor">
</field>
</data>
</node>
