Méthode IMFPMediaPlayerCallback::OnMediaPlayerEvent (mfplay.h)
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour