Méthode IMFPMediaPlayerCallback::OnMediaPlayerEvent (mfplay.h)

Important Déconseillée. Cette API peut être supprimée des versions ultérieures de Windows. Les applications doivent utiliser la session multimédia pour la lecture.
 

Appelé par l’objet lecteur MFPlay pour notifier l’application d’un événement de lecture.

Syntaxe

void OnMediaPlayerEvent(
  [in] MFP_EVENT_HEADER *pEventHeader
);

Paramètres

[in] pEventHeader

Pointeur vers une structure MFP_EVENT_HEADER qui contient des informations sur l’événement.

Valeur de retour

None

Notes

Le type spécifique d’événement de lecture est indiqué dans le membre eEventType de la structure MFP_EVENT_HEADER . Cette structure contient des informations communes à tous les types d’événements. Certains types d’événements utilisent des structures étendues. Un ensemble de macros est défini pour le cast du pointeur pEventHeader vers le type de structure approprié. Pour plus d’informations, consultez MFP_EVENT_TYPE.

Il est sûr d’appeler les méthodes IMFPMediaPlayer et IMFPMediaItem à l’intérieur de la méthode OnMediaPlayer . MFPlay est garanti de ne pas réentréer la méthode OnMediaPlayer . Autrement dit, les appels à OnMediaPlayer sont sérialisés et la méthode ne sera pas appelée à nouveau à partir d’OnMediaPlayer.

Exemples

Le code suivant montre comment caster le paramètre pEventHeader vers le type de structure approprié et passer le pointeur de structure à une fonction de gestionnaire. Les fonctions de gestionnaire sont déclarées au début de l’exemple. L’application doit fournir des implémentations pour ces fonctions. Notez que vous n’avez pas besoin de gérer chaque événement. Par exemple, si votre application n’appelle jamais IMFPMediaPlayer::SetRate, vous n’avez pas besoin de gérer l’événement MFP_EVENT_TYPE_RATE_SET . Dans ce cas, omettez simplement MFP_EVENT_TYPE_RATE_SET de l’instruction switch .

// Declarations of MFPlay event handler functions.

void OnPlay(MFP_PLAY_EVENT *pEvent);
void OnPause(MFP_PAUSE_EVENT *pEvent);
void OnStop(MFP_STOP_EVENT *pEvent);
void OnPositionSet(MFP_POSITION_SET_EVENT *pEvent);
void OnRateSet(MFP_RATE_SET_EVENT *pEvent);
void OnMediaItemCreated(MFP_MEDIAITEM_CREATED_EVENT *pEvent);
void OnMediaItemSet(MFP_MEDIAITEM_SET_EVENT *pEvent);
void OnFrameStep(MFP_FRAME_STEP_EVENT *pEvent);
void OnMediaItemCleared(MFP_MEDIAITEM_CLEARED_EVENT *pEvent);
void OnMFEvent(MFP_MF_EVENT *pEvent); 
void OnError(MFP_ERROR_EVENT *pEvent);
void OnPlaybackEnded(MFP_PLAYBACK_ENDED_EVENT *pEvent);
void OnAquireUserCredential(MFP_ACQUIRE_USER_CREDENTIAL_EVENT *pEvent);

// Implementation of IMFPMediaPlayerCallback::OnMediaPlayerEvent
void STDMETHODCALLTYPE PlayerCallback::OnMediaPlayerEvent(MFP_EVENT_HEADER * pEventHeader)
{
    switch (pEventHeader->eEventType)
    {
    case MFP_EVENT_TYPE_PLAY: 
        OnPlay(MFP_GET_PLAY_EVENT(pEventHeader));
        break;

    case MFP_EVENT_TYPE_PAUSE: 
        OnPause(MFP_GET_PAUSE_EVENT(pEventHeader));
        break;

    case MFP_EVENT_TYPE_STOP: 
        OnStop(MFP_GET_STOP_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_POSITION_SET: 
        OnPositionSet(MFP_GET_POSITION_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_RATE_SET: 
        OnRateSet(MFP_GET_RATE_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_CREATED: 
        OnMediaItemCreated(MFP_GET_MEDIAITEM_CREATED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_SET: 
        OnMediaItemSet(MFP_GET_MEDIAITEM_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_FRAME_STEP: 
        OnFrameStep(MFP_GET_FRAME_STEP_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_CLEARED: 
        OnMediaItemCleared(MFP_GET_MEDIAITEM_CLEARED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MF: 
        OnMFEvent(MFP_GET_MF_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_ERROR: 
        OnError(MFP_GET_ERROR_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_PLAYBACK_ENDED: 
        OnPlaybackEnded(MFP_GET_PLAYBACK_ENDED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL: 
        OnAquireUserCredential(MFP_GET_ACQUIRE_USER_CREDENTIAL_EVENT(pEventHeader)); 
        break;
    }
}

Configuration requise

   
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête mfplay.h

Voir aussi

IMFPMediaPlayerCallback

Utilisation de MFPlay pour la lecture audio/vidéo