#############################################################################
## Name:        lib/Wx/ActiveX/WMPlayer.pm
## Purpose:     Wx::ActiveX::WMPlayer (Windows Media Player)
## Author:      Thiago S. V.
## Created:     14/04/2003
## SVN-ID:      $Id: WMPlayer.pm 2739 2010-01-05 05:13:25Z mdootson $
## Copyright:   (c) 2002 - 2008 Thiago S. V., Mattia Barbon, Mark Dootson
## Licence:     This program is free software; you can redistribute it and/or
##              modify it under the same terms as Perl itself
#############################################################################

#----------------------------------------------------------------------
 package Wx::ActiveX::WMPlayer;
#----------------------------------------------------------------------

use strict;
use Wx qw( :misc );
use Wx::ActiveX;
use base qw( Wx::ActiveX );

our $VERSION = '0.13';

our (@EXPORT_OK, %EXPORT_TAGS);
$EXPORT_TAGS{everything} = \@EXPORT_OK;

my $PROGID = 'WMPlayer.OCX';


# Local Event IDs

my $wxEVENTID_AX_MEDIAPLAYER_ENDOFSTREAM = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DEVICESTATUSCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_BUFFERING = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_SCRIPTCOMMAND = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYSTATECHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_AUDIOLANGUAGECHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DEVICESYNCERROR = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_POSITIONCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MOUSEDOWN = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DOUBLECLICK = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_OPENSTATECHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MODECHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_KEYUP = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DISCONNECT = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MOUSEUP = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_STATUSCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CLICK = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DEVICESYNCSTATECHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYERRECONNECT = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DURATIONUNITCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_KEYDOWN = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_KEYPRESS = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_OPENPLAYLISTSWITCH = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DEVICEDISCONNECT = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MEDIAERROR = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_WARNING = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MARKERHIT = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_SWITCHEDTOCONTROL = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CDROMMEDIACHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_CURRENTITEMCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DEVICECONNECT = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MOUSEMOVE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_MEDIACHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_ERROR = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_NEWSTREAM = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_DOMAINCHANGE = Wx::NewEventType;
my $wxEVENTID_AX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION = Wx::NewEventType;

# Event ID Sub Functions

sub EVENTID_AX_MEDIAPLAYER_ENDOFSTREAM () { $wxEVENTID_AX_MEDIAPLAYER_ENDOFSTREAM }
sub EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED () { $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED }
sub EVENTID_AX_MEDIAPLAYER_DEVICESTATUSCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_DEVICESTATUSCHANGE }
sub EVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE () { $wxEVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE }
sub EVENTID_AX_MEDIAPLAYER_BUFFERING () { $wxEVENTID_AX_MEDIAPLAYER_BUFFERING }
sub EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED () { $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED }
sub EVENTID_AX_MEDIAPLAYER_SCRIPTCOMMAND () { $wxEVENTID_AX_MEDIAPLAYER_SCRIPTCOMMAND }
sub EVENTID_AX_MEDIAPLAYER_PLAYSTATECHANGE () { $wxEVENTID_AX_MEDIAPLAYER_PLAYSTATECHANGE }
sub EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE }
sub EVENTID_AX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE () { $wxEVENTID_AX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE }
sub EVENTID_AX_MEDIAPLAYER_AUDIOLANGUAGECHANGE () { $wxEVENTID_AX_MEDIAPLAYER_AUDIOLANGUAGECHANGE }
sub EVENTID_AX_MEDIAPLAYER_DEVICESYNCERROR () { $wxEVENTID_AX_MEDIAPLAYER_DEVICESYNCERROR }
sub EVENTID_AX_MEDIAPLAYER_POSITIONCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_POSITIONCHANGE }
sub EVENTID_AX_MEDIAPLAYER_MOUSEDOWN () { $wxEVENTID_AX_MEDIAPLAYER_MOUSEDOWN }
sub EVENTID_AX_MEDIAPLAYER_DOUBLECLICK () { $wxEVENTID_AX_MEDIAPLAYER_DOUBLECLICK }
sub EVENTID_AX_MEDIAPLAYER_OPENSTATECHANGE () { $wxEVENTID_AX_MEDIAPLAYER_OPENSTATECHANGE }
sub EVENTID_AX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE () { $wxEVENTID_AX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE }
sub EVENTID_AX_MEDIAPLAYER_MODECHANGE () { $wxEVENTID_AX_MEDIAPLAYER_MODECHANGE }
sub EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED () { $wxEVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED }
sub EVENTID_AX_MEDIAPLAYER_KEYUP () { $wxEVENTID_AX_MEDIAPLAYER_KEYUP }
sub EVENTID_AX_MEDIAPLAYER_DISCONNECT () { $wxEVENTID_AX_MEDIAPLAYER_DISCONNECT }
sub EVENTID_AX_MEDIAPLAYER_MOUSEUP () { $wxEVENTID_AX_MEDIAPLAYER_MOUSEUP }
sub EVENTID_AX_MEDIAPLAYER_STATUSCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_STATUSCHANGE }
sub EVENTID_AX_MEDIAPLAYER_CLICK () { $wxEVENTID_AX_MEDIAPLAYER_CLICK }
sub EVENTID_AX_MEDIAPLAYER_DEVICESYNCSTATECHANGE () { $wxEVENTID_AX_MEDIAPLAYER_DEVICESYNCSTATECHANGE }
sub EVENTID_AX_MEDIAPLAYER_PLAYERRECONNECT () { $wxEVENTID_AX_MEDIAPLAYER_PLAYERRECONNECT }
sub EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE }
sub EVENTID_AX_MEDIAPLAYER_DURATIONUNITCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_DURATIONUNITCHANGE }
sub EVENTID_AX_MEDIAPLAYER_KEYDOWN () { $wxEVENTID_AX_MEDIAPLAYER_KEYDOWN }
sub EVENTID_AX_MEDIAPLAYER_KEYPRESS () { $wxEVENTID_AX_MEDIAPLAYER_KEYPRESS }
sub EVENTID_AX_MEDIAPLAYER_OPENPLAYLISTSWITCH () { $wxEVENTID_AX_MEDIAPLAYER_OPENPLAYLISTSWITCH }
sub EVENTID_AX_MEDIAPLAYER_DEVICEDISCONNECT () { $wxEVENTID_AX_MEDIAPLAYER_DEVICEDISCONNECT }
sub EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED () { $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED }
sub EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED () { $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED }
sub EVENTID_AX_MEDIAPLAYER_MEDIAERROR () { $wxEVENTID_AX_MEDIAPLAYER_MEDIAERROR }
sub EVENTID_AX_MEDIAPLAYER_WARNING () { $wxEVENTID_AX_MEDIAPLAYER_WARNING }
sub EVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE }
sub EVENTID_AX_MEDIAPLAYER_MARKERHIT () { $wxEVENTID_AX_MEDIAPLAYER_MARKERHIT }
sub EVENTID_AX_MEDIAPLAYER_SWITCHEDTOCONTROL () { $wxEVENTID_AX_MEDIAPLAYER_SWITCHEDTOCONTROL }
sub EVENTID_AX_MEDIAPLAYER_CDROMMEDIACHANGE () { $wxEVENTID_AX_MEDIAPLAYER_CDROMMEDIACHANGE }
sub EVENTID_AX_MEDIAPLAYER_CURRENTITEMCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_CURRENTITEMCHANGE }
sub EVENTID_AX_MEDIAPLAYER_DEVICECONNECT () { $wxEVENTID_AX_MEDIAPLAYER_DEVICECONNECT }
sub EVENTID_AX_MEDIAPLAYER_MOUSEMOVE () { $wxEVENTID_AX_MEDIAPLAYER_MOUSEMOVE }
sub EVENTID_AX_MEDIAPLAYER_MEDIACHANGE () { $wxEVENTID_AX_MEDIAPLAYER_MEDIACHANGE }
sub EVENTID_AX_MEDIAPLAYER_ERROR () { $wxEVENTID_AX_MEDIAPLAYER_ERROR }
sub EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED () { $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED }
sub EVENTID_AX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE () { $wxEVENTID_AX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE }
sub EVENTID_AX_MEDIAPLAYER_PLAYLISTCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_PLAYLISTCHANGE }
sub EVENTID_AX_MEDIAPLAYER_NEWSTREAM () { $wxEVENTID_AX_MEDIAPLAYER_NEWSTREAM }
sub EVENTID_AX_MEDIAPLAYER_DOMAINCHANGE () { $wxEVENTID_AX_MEDIAPLAYER_DOMAINCHANGE }
sub EVENTID_AX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION () { $wxEVENTID_AX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION }

# Event Sub Functions

sub EVT_ACTIVEX_MEDIAPLAYER_ENDOFSTREAM { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"EndOfStream",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MediaCollectionAttributeStringRemoved",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DEVICESTATUSCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DeviceStatusChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"CurrentPlaylistItemAvailable",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_BUFFERING { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"Buffering",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MediaCollectionAttributeStringChanged",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_SCRIPTCOMMAND { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"ScriptCommand",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYSTATECHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlayStateChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MediaCollectionChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"CurrentMediaItemAvailable",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_AUDIOLANGUAGECHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"AudioLanguageChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DEVICESYNCERROR { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DeviceSyncError",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_POSITIONCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PositionChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MOUSEDOWN { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MouseDown",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DOUBLECLICK { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DoubleClick",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_OPENSTATECHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"OpenStateChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"CreatePartnershipComplete",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MODECHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"ModeChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MediaCollectionAttributeStringAdded",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_KEYUP { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"KeyUp",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DISCONNECT { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"Disconnect",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MOUSEUP { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MouseUp",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_STATUSCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"StatusChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CLICK { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"Click",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DEVICESYNCSTATECHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DeviceSyncStateChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYERRECONNECT { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlayerReconnect",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlaylistCollectionChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DURATIONUNITCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DurationUnitChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_KEYDOWN { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"KeyDown",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_KEYPRESS { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"KeyPress",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_OPENPLAYLISTSWITCH { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"OpenPlaylistSwitch",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DEVICEDISCONNECT { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DeviceDisconnect",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlaylistCollectionPlaylistSetAsDeleted",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlaylistCollectionPlaylistRemoved",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MEDIAERROR { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MediaError",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_WARNING { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"Warning",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"CurrentPlaylistChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MARKERHIT { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MarkerHit",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_SWITCHEDTOCONTROL { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"SwitchedToControl",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CDROMMEDIACHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"CdromMediaChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_CURRENTITEMCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"CurrentItemChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DEVICECONNECT { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DeviceConnect",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MOUSEMOVE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MouseMove",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_MEDIACHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"MediaChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_ERROR { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"Error",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlaylistCollectionPlaylistAdded",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlayerDockedStateChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"PlaylistChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_NEWSTREAM { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"NewStream",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_DOMAINCHANGE { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"DomainChange",$_[2]) ;}
sub EVT_ACTIVEX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION { &Wx::ActiveX::EVT_ACTIVEX($_[0],$_[1],"SwitchedToPlayerApplication",$_[2]) ;}

# Exports & Tags

{
    my @eventexports = qw(
            EVENTID_AX_MEDIAPLAYER_ENDOFSTREAM
            EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED
            EVENTID_AX_MEDIAPLAYER_DEVICESTATUSCHANGE
            EVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE
            EVENTID_AX_MEDIAPLAYER_BUFFERING
            EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED
            EVENTID_AX_MEDIAPLAYER_SCRIPTCOMMAND
            EVENTID_AX_MEDIAPLAYER_PLAYSTATECHANGE
            EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE
            EVENTID_AX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE
            EVENTID_AX_MEDIAPLAYER_AUDIOLANGUAGECHANGE
            EVENTID_AX_MEDIAPLAYER_DEVICESYNCERROR
            EVENTID_AX_MEDIAPLAYER_POSITIONCHANGE
            EVENTID_AX_MEDIAPLAYER_MOUSEDOWN
            EVENTID_AX_MEDIAPLAYER_DOUBLECLICK
            EVENTID_AX_MEDIAPLAYER_OPENSTATECHANGE
            EVENTID_AX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE
            EVENTID_AX_MEDIAPLAYER_MODECHANGE
            EVENTID_AX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED
            EVENTID_AX_MEDIAPLAYER_KEYUP
            EVENTID_AX_MEDIAPLAYER_DISCONNECT
            EVENTID_AX_MEDIAPLAYER_MOUSEUP
            EVENTID_AX_MEDIAPLAYER_STATUSCHANGE
            EVENTID_AX_MEDIAPLAYER_CLICK
            EVENTID_AX_MEDIAPLAYER_DEVICESYNCSTATECHANGE
            EVENTID_AX_MEDIAPLAYER_PLAYERRECONNECT
            EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE
            EVENTID_AX_MEDIAPLAYER_DURATIONUNITCHANGE
            EVENTID_AX_MEDIAPLAYER_KEYDOWN
            EVENTID_AX_MEDIAPLAYER_KEYPRESS
            EVENTID_AX_MEDIAPLAYER_OPENPLAYLISTSWITCH
            EVENTID_AX_MEDIAPLAYER_DEVICEDISCONNECT
            EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED
            EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED
            EVENTID_AX_MEDIAPLAYER_MEDIAERROR
            EVENTID_AX_MEDIAPLAYER_WARNING
            EVENTID_AX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE
            EVENTID_AX_MEDIAPLAYER_MARKERHIT
            EVENTID_AX_MEDIAPLAYER_SWITCHEDTOCONTROL
            EVENTID_AX_MEDIAPLAYER_CDROMMEDIACHANGE
            EVENTID_AX_MEDIAPLAYER_CURRENTITEMCHANGE
            EVENTID_AX_MEDIAPLAYER_DEVICECONNECT
            EVENTID_AX_MEDIAPLAYER_MOUSEMOVE
            EVENTID_AX_MEDIAPLAYER_MEDIACHANGE
            EVENTID_AX_MEDIAPLAYER_ERROR
            EVENTID_AX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED
            EVENTID_AX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE
            EVENTID_AX_MEDIAPLAYER_PLAYLISTCHANGE
            EVENTID_AX_MEDIAPLAYER_NEWSTREAM
            EVENTID_AX_MEDIAPLAYER_DOMAINCHANGE
            EVENTID_AX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION
            EVT_ACTIVEX_MEDIAPLAYER_ENDOFSTREAM
            EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED
            EVT_ACTIVEX_MEDIAPLAYER_DEVICESTATUSCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE
            EVT_ACTIVEX_MEDIAPLAYER_BUFFERING
            EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED
            EVT_ACTIVEX_MEDIAPLAYER_SCRIPTCOMMAND
            EVT_ACTIVEX_MEDIAPLAYER_PLAYSTATECHANGE
            EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE
            EVT_ACTIVEX_MEDIAPLAYER_AUDIOLANGUAGECHANGE
            EVT_ACTIVEX_MEDIAPLAYER_DEVICESYNCERROR
            EVT_ACTIVEX_MEDIAPLAYER_POSITIONCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_MOUSEDOWN
            EVT_ACTIVEX_MEDIAPLAYER_DOUBLECLICK
            EVT_ACTIVEX_MEDIAPLAYER_OPENSTATECHANGE
            EVT_ACTIVEX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE
            EVT_ACTIVEX_MEDIAPLAYER_MODECHANGE
            EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED
            EVT_ACTIVEX_MEDIAPLAYER_KEYUP
            EVT_ACTIVEX_MEDIAPLAYER_DISCONNECT
            EVT_ACTIVEX_MEDIAPLAYER_MOUSEUP
            EVT_ACTIVEX_MEDIAPLAYER_STATUSCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_CLICK
            EVT_ACTIVEX_MEDIAPLAYER_DEVICESYNCSTATECHANGE
            EVT_ACTIVEX_MEDIAPLAYER_PLAYERRECONNECT
            EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_DURATIONUNITCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_KEYDOWN
            EVT_ACTIVEX_MEDIAPLAYER_KEYPRESS
            EVT_ACTIVEX_MEDIAPLAYER_OPENPLAYLISTSWITCH
            EVT_ACTIVEX_MEDIAPLAYER_DEVICEDISCONNECT
            EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED
            EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED
            EVT_ACTIVEX_MEDIAPLAYER_MEDIAERROR
            EVT_ACTIVEX_MEDIAPLAYER_WARNING
            EVT_ACTIVEX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_MARKERHIT
            EVT_ACTIVEX_MEDIAPLAYER_SWITCHEDTOCONTROL
            EVT_ACTIVEX_MEDIAPLAYER_CDROMMEDIACHANGE
            EVT_ACTIVEX_MEDIAPLAYER_CURRENTITEMCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_DEVICECONNECT
            EVT_ACTIVEX_MEDIAPLAYER_MOUSEMOVE
            EVT_ACTIVEX_MEDIAPLAYER_MEDIACHANGE
            EVT_ACTIVEX_MEDIAPLAYER_ERROR
            EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED
            EVT_ACTIVEX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE
            EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_NEWSTREAM
            EVT_ACTIVEX_MEDIAPLAYER_DOMAINCHANGE
            EVT_ACTIVEX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION
    );

    $EXPORT_TAGS{"mediaplayer"} = [] if not exists $EXPORT_TAGS{"mediaplayer"};
    push @EXPORT_OK, ( @eventexports ) ;
    push @{ $EXPORT_TAGS{"mediaplayer"} }, ( @eventexports );
}


sub new {
    my $class = shift;
    # parent must exist
    my $parent = shift;
    my $windowid = shift || -1;
    my $pos = shift || wxDefaultPosition;
    my $size = shift || wxDefaultSize;
    my $self = $class->SUPER::new( $parent, $PROGID, $windowid, $pos, $size, @_ );
    return $self;
}

sub newVersion {
    my $class = shift;
    # version must exist
    my $version = shift;
    # parent must exist
    my $parent = shift;
    my $windowid = shift || -1;
    my $pos = shift || wxDefaultPosition;
    my $size = shift || wxDefaultSize;
    my $self = $class->SUPER::new( $parent, $PROGID . '.' . $version, $windowid, $pos, $size, @_ );
    return $self;
}


1;


__END__

=head1 NAME

Wx::ActiveX::WMPlayer - interface to WMPlayer.OCX ActiveX Control

=head1 SYNOPSIS

    use Wx::ActiveX::WMPlayer qw( :everything );
    
    ..........
    
    my $activex = Wx::ActiveX::WMPlayer->new( $parent );
    
    OR
    
    my $activex = Wx::ActiveX::WMPlayer->newVersion( 1, $parent );
    
    EVT_ACTIVEX_MEDIAPLAYER_OPENSTATECHANGE( $handler, $activex, \&on_event_openstatechange );
    
    use Win32::OLE;
    
    my $filename = 'c:/path/to/mediafile';
    
    $activex->PropSet( 'URL', $filename);
    my $winole = $activex->GetOLE;
    $winole->controls->play; 
    

=head1 DESCRIPTION

Interface to WMPlayer.OCX ActiveX Control

=head1 METHODS

=head2 new

    my $activex = Wx::ActiveX::WMPlayer->new(
                        $parent,
                        $windowid,
                        $position,
                        $size,
                        $style,
                        $name);

Returns a new instance of Wx::ActiveX::WMPlayer. Only $parent is mandatory.
$parent must be derived from Wx::Window (e.g. Wx::Frame, Wx::Panel etc).
This constructor creates an instance using the latest version available
of WMPlayer.OCX.

=head2 newVersion

    my $activex = Wx::ActiveX::WMPlayer->newVersion(
                        $version
                        $parent,
                        $windowid,
                        $position,
                        $size,
                        $style,
                        $name);

Returns a new instance of Wx::ActiveX::WMPlayer. $version and $parent are
mandatory. $parent must be derived from Wx::Window (e.g. Wx::Frame,
Wx::Panel etc). This constructor creates an instance using the specific
type library specified in $version of WMPlayer.OCX.

e.g. $version = 4;

will produce an instance based on the type library for

WMPlayer.OCX.4

=head1 EVENTS

The module provides the following exportable event subs

    EVT_ACTIVEX_MEDIAPLAYER_OPENSTATECHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_STATUSCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYSTATECHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_AUDIOLANGUAGECHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_ENDOFSTREAM( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_POSITIONCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MARKERHIT( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DURATIONUNITCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_SCRIPTCOMMAND( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DISCONNECT( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_BUFFERING( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_NEWSTREAM( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_ERROR( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_WARNING( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CDROMMEDIACHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MEDIACHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CURRENTMEDIAITEMAVAILABLE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CURRENTPLAYLISTCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CURRENTPLAYLISTITEMAVAILABLE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CURRENTITEMCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGADDED( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTADDED( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTREMOVED( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MODECHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MEDIAERROR( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DOMAINCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_OPENPLAYLISTSWITCH( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_SWITCHEDTOPLAYERAPPLICATION( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_SWITCHEDTOCONTROL( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYERDOCKEDSTATECHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_PLAYERRECONNECT( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CLICK( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DOUBLECLICK( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_KEYDOWN( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_KEYPRESS( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_KEYUP( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MOUSEDOWN( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MOUSEMOVE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_MOUSEUP( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DEVICECONNECT( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DEVICEDISCONNECT( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DEVICESTATUSCHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DEVICESYNCSTATECHANGE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_DEVICESYNCERROR( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );
    EVT_ACTIVEX_MEDIAPLAYER_CREATEPARTNERSHIPCOMPLETE( $evthandler, $activexcontrol, \&on_event_mediaplayer_sub );


=head1 ACTIVEX INFO

=head2 Events

    OpenStateChange
    StatusChange
    PlayStateChange
    AudioLanguageChange
    EndOfStream
    PositionChange
    MarkerHit
    DurationUnitChange
    ScriptCommand
    Disconnect
    Buffering
    NewStream
    Error
    Warning
    CdromMediaChange
    PlaylistChange
    MediaChange
    CurrentMediaItemAvailable
    CurrentPlaylistChange
    CurrentPlaylistItemAvailable
    CurrentItemChange
    MediaCollectionChange
    MediaCollectionAttributeStringAdded
    MediaCollectionAttributeStringRemoved
    PlaylistCollectionChange
    PlaylistCollectionPlaylistAdded
    PlaylistCollectionPlaylistRemoved
    PlaylistCollectionPlaylistSetAsDeleted
    ModeChange
    MediaCollectionAttributeStringChanged
    MediaError
    DomainChange
    OpenPlaylistSwitch
    SwitchedToPlayerApplication
    SwitchedToControl
    PlayerDockedStateChange
    PlayerReconnect
    Click
    DoubleClick
    KeyDown
    KeyPress
    KeyUp
    MouseDown
    MouseMove
    MouseUp
    DeviceConnect
    DeviceDisconnect
    DeviceStatusChange
    DeviceSyncStateChange
    DeviceSyncError
    CreatePartnershipComplete

=head2 Methods

    AddRef()
    close()
    GetIDsOfNames(riid , rgszNames , cNames , lcid , rgdispid)
    GetTypeInfo(itinfo , lcid , pptinfo)
    GetTypeInfoCount(pctinfo)
    Invoke(dispidMember , riid , lcid , wFlags , pdispparams , pvarResult , pexcepinfo , puArgErr)
    launchURL(bstrURL)
    newMedia(bstrURL)
    newPlaylist(bstrName , bstrURL)
    openPlayer(bstrURL)
    QueryInterface(riid , ppvObj)
    Release()

=head2 Properties

    cdromCollection
    closedCaption
    controls
    currentMedia
    currentPlaylist
    dvd
    enableContextMenu
    enabled
    Error
    fullScreen
    isOnline
    isRemote
    mediaCollection
    network
    openState
    playerApplication
    playlistCollection
    playState
    settings
    status
    stretchToFit
    uiMode
    URL
    versionInfo
    windowlessVideo

=head1 COPYRIGHT & LICENSE

Copyright (C) 2008  Mark Dootson

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut

# end file


#
