Método IMFPMediaPlayerCallback::OnMediaPlayerEvent (mfplay.h)
Chamado pelo objeto de player MFPlay para notificar a aplicação de um evento de reprodução.
Sintaxe
void OnMediaPlayerEvent(
[in] MFP_EVENT_HEADER *pEventHeader
);
Parâmetros
[in] pEventHeader
Ponteiro para uma estrutura MFP_EVENT_HEADER que contém informações sobre o evento.
Valor retornado
Nenhum
Comentários
O tipo específico de evento de reprodução é fornecido no membro eEventType da estrutura MFP_EVENT_HEADER . Essa estrutura contém informações comuns a todos os tipos de eventos. Alguns tipos de evento usam estruturas estendidas. Um conjunto de macros é definido para converter o ponteiro pEventHeader para o tipo de estrutura correto. Para obter mais informações, consulte MFP_EVENT_TYPE.
É seguro chamar métodos IMFPMediaPlayer e IMFPMediaItem dentro do método OnMediaPlayer . O MFPlay tem a garantia de não recuar novamente no método OnMediaPlayer . Ou seja, as chamadas para OnMediaPlayer são serializadas e o método não será invocado novamente de dentro do OnMediaPlayer.
Exemplos
O código a seguir mostra como converter o parâmetro pEventHeader para o tipo de estrutura correto e passar o ponteiro de estrutura para uma função de manipulador. As funções de manipulador são declaradas no início do exemplo. O aplicativo precisaria fornecer implementações para essas funções. Observe que você não precisa lidar com todos os eventos. Por exemplo, se seu aplicativo nunca chamar IMFPMediaPlayer::SetRate, você não precisará lidar com o evento MFP_EVENT_TYPE_RATE_SET . Nesse caso, basta omitir MFP_EVENT_TYPE_RATE_SET da instrução 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;
}
}
Requisitos
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | mfplay.h |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de